我正在寻找一个简单的PHP脚本+表单,根据输入的用户名和密码将用户路由到特定的URL。简单的PHP多用户登录,取决于用户的不同页面 - 这里有什么问题?
<?php
session_start();
$data=array("user1"=>array("url"=>"file1.php","password"=>"pass1"),
"user2"=>array("url"=>"file2.php","password"=>"pass2"));
if(isset($_POST['username']) && isset($_POST['password'])) {
if($data[$_POST['username']]['password'] == $_POST['password']) {
$_SESSION['username'] = $_POST['username'] . " " . $_POST['password'];
header('Location: ' . $data[$_POST['username']]['url']);
login('<p class="alert">Incorrect username or password.</p> ');
}
} else {
login();
}
?><?php
function login($response='Please enter your username and password.') {
?>
这是身体:在页面的顶部
代码
<p><?=$response?></p>
<form action="" method="post">
<table width="400" border="0" cellspacing="0" cellpadding="4">
<tr>
<td width="90"><label class="loginform" for="username">Username:</label></td>
<td width="294"><input name="username" type="text" /></td>
</tr>
<tr>
<td><label for="password">Password:</label></td>
<td><input name="password" type="password"></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" value="Login" /></td>
</tr>
</table>
</form>
<?php } ?>
此代码工作正常,但如果用户输入的密码不正确,将其重定向到一个空白页面(具体地说,它只在最后一页加载页面:
<?php } ?>
我明白这段代码没写很好,所以这是第一个问题。我真的很想看到一个写得很好的版本(只是为了学习和研究它)。但如果这是不可能的,我将如何纠正这个代码,所以不正确的密码不会破坏页面?
这很奇怪,因为如果你什么都没输入(只是点击提交),它会显示“不正确的用户名或密码”,如果你输入的密码不正确,同样的事情。但用户名+密码错误,或只有错误的密码,它会进入空白页面。
在此先感谢!
谢谢你的帮助。现在情况正好相反,如果你输入一个不正确的用户名,它会使页面空白。 Re:保护,它会将它们路由到另一个受PW保护的页面。 – user1059445
奇怪,它似乎没关系= s – 2011-11-22 10:58:54
@ user1059445然后[启用错误报告](http://stackoverflow.com/questions/74847/php-error-reporting-best-setting-for-development-e-strict)。您可能在调用header()之前输出数据,然后重定向不会发生。 – CodeCaster