我正在尝试在下面的查询中使用多个AND,并且每当我尝试使用我的登录功能时它都会弄乱密码。代码如下。
// this is my problem, right here
$result = mysql_query("SELECT username, password, FirstName FROM members
WHERE username='$myusername'
AND password='$mypassword'
AND FirstName = '$firstname'");
// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1){
// Register $myusername, $mypassword and redirect to file "login_success.php"
session_start();
$_SESSION['myusername'] = $myusername;
$_SESSION['mypassword'] = $mypassword;
$_SESSION['firstname'] = $firstname;
编辑:
SQL查询:
表名:成员
username | password | FirstName | LastName
johndoe deers John Doe
PHPMyAdmin告诉我,当我在那里运行时返回零行。
答案 0 :(得分:3)
A)不要将密码存储在内存中
B)哈希密码
C)如果您已经按用户名和密码过滤,则没有理由过滤FirstName =的位置。您是否在用户登录时询问用户的用户名,密码和FIRST NAME?你从哪里获得变量?用户名不是唯一的吗?
答案 1 :(得分:0)
如果我正确理解了问题,您应该检查是否正确输入了用户名,密码和FirstName的大小写(意味着您在数据库中检查的值)。
如果你想让它不区分大小写,你应该使用LIKE。
此评论如果正确
// If result matched $myusername and $mypassword, table row must be 1 row
这意味着您甚至不应该首先检查FirstName吗?
另外,如果您可以提供样本数据,这将有很大帮助!