我想创建一个简单的登录凭证检查器(使用会话变量)。PHP检查密码脚本不会为多个用户工作
这是我到目前为止有:
<?php
include("dbconnect.php");
$u_name = mysql_real_escape_string($_POST['uname']);
$p_word = mysql_real_escape_string($_POST['pword']);
# *** querying all records ***
$query = mysql_query("SELECT valid_username, valid_password FROM notes_users");
while($rst = mysql_fetch_array($query)) {
//echo $rst[valid_username] . ", ";
//echo $u_name . " || ";
//echo ($rst[valid_username] == $u_name) . " || ";
//echo $rst[valid_password] . ", ";
//echo $p_word . " || ";
//echo ($rst[valid_password] == $p_word) . " || ";
//echo (($rst[valid_username] == $u_name) AND ($rst[valid_password] == $p_word));
//echo "<br/>";
if (($rst[valid_username] == $u_name) AND ($rst[valid_password] == $p_word)) {
session_start();
$_SESSION['login'] = "1";
header('Location: main.php') ;
} else {
session_start();
$_SESSION['login'] = '';
header('Location: badlogin.php') ;
}
}
?>
这里的问题:如果MySQL表中有一个以上的用户在它的列表中,检查中断。只有表中最后输入的用户已授予访问权限。输入的最后一位用户之上的任何人都会被碰到不正确的登录屏幕 - 即使凭据正确。为什么发生这种情况?任何人都可以提出一个代码修复或更好的代码来实现这个登录检查?
编辑:评论代码测试以查看提供的凭据是否与记录中的凭据相匹配。该脚本的那部分工作正常。
问题解决了!谢谢你们。对于将来看到这个的任何人,绝对要加密你的密码,我的是纯文本,因为这是一个本地测试应用程序,甚至不会看到上传到网络。
不要将密码存放在纯文本。 – SLaks 2012-04-22 02:42:52
使用用户名进行查询。数据库就是为这种事情而精确优化的 - 使用它! – lynks 2012-04-22 02:45:23