【发布时间】:2012-12-01 13:14:36
【问题描述】:
为什么这段代码不起作用?
它总是进入 else 并设置 $_SESSION['wronglogin']=1; 它是一个登录脚本,它接受电子邮件 ID 和密码的输入,然后检查是否存在任何此类内容,那么它应该启动 $_SESSION['loggedin'],否则启动 $_SESSION['wronglogin']。 我已经尝试了很多,但我就是不明白
$_SESSION['login-id']=$loginid;
$_SESSION['loginpassword']=$loginpassword;
$loginid = stripslashes($loginid);
$loginpassword = stripslashes($loginpassword);
$loginid = mysql_real_escape_string($loginid);
$loginpassword = mysql_real_escape_string($loginpassword);
$con = mysql_connect("localhost", "moodabsz_naman", "database") or die(mysql_error());
mysql_select_db("moodabsz_database",$con) or die(mysql_error());
$sql="SELECT *
FROM user
WHERE `email_id` = '$loginid'
AND `password` = '$loginpassword'";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
if($count==1){
$_SESSION['loggedin']=1;
mysql_close($con);
header('location: index.php');
}
else {
$_SESSION['wronglogin']=1;
echo "Wrong Username or Password";
mysql_close($con);
header('Location: index.php');
}
【问题讨论】:
-
另外,您不应该使用
mysql_*函数,因为它们已被弃用。使用 PDO (php.net/PDO) 和参数化查询。您的代码存在 SQL 注入漏洞。 -
也许试试 if($count>0) { 有帮助吗?
-
您可能有多行,因为您正在检查
$count==1,所以它会进入其他行。在查询中添加LIMIT 1。 -
@Bondye 你评论里的代码有严重问题,你应该删除它。
-
@Bondye 您的代码不会验证电子邮件和密码,它让每个人都可以登录,而无需在表中记录。我会说这很严重。你也可以用
if(true)替换你的代码,因为它本质上就是这样做的。
标签: php mysql database session login-script