【问题标题】:What is the error in this code?..It always go in else这段代码有什么错误?..它总是在其他地方
【发布时间】: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


【解决方案1】:

你能复制一下这个的输出吗,

<?php
$_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) or die(mysql_error());

$count=mysql_num_rows($result);

echo 'Debug::Count-'.$count;

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');
}

【讨论】:

    【解决方案2】:

    上面的代码不起作用,因为缺少应该放在 PHP 代码第一行的 session_start() 函数。

    <?php
    session_start();
    /*
    
    The rest of your code
    
    */
    ?>
    

    【讨论】:

    • 对不起先生,实际上我已经提到我只用它来运行它
    • 抱歉,我发现您还没有初始化会话。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-25
    • 2022-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多