网站用户名和密码无效

时间:2016-01-12 13:45:51

标签: php html mysql

我正在尝试建立一个包含登录页面的网站,但每次我输入电子邮件和密码时,我都会得到错误的凭据"。以下是我的代码,首先是我的HTML代码:

<form class="form-login" action = "check.php">
                    <div class="errorHandler alert alert-danger no-display">
                        <i class="fa fa-remove-sign"></i> You have some form errors. Please check below.
                    </div>
                    <fieldset>
                        <div class="form-group">
                            <span class="input-icon">
                                <input type="text" class="form-control" name="user" placeholder="Username">
                                <i class="fa fa-user"></i> </span>
                        </div>
                        <div class="form-group form-actions">
                            <span class="input-icon">
                                <input type="password" class="form-control password" name="pass" placeholder="Password">
                                <i class="fa fa-lock"></i>
                                <a class="forgot" href="#">
                                    I forgot my password
                                </a> </span>
                        </div>
                        <div class="form-actions">
                            <label for="remember" class="checkbox-inline">
                                <input type="checkbox" class="grey remember" id="remember" name="remember">
                                Keep me signed in
                            </label>
                            <button  type="submit" class="btn btn-green pull-right"  name="btn-login"> Login <i class="fa fa-arrow-circle-right"></i></button>

然后我的check.php代码:

mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");
// username and password sent from form 
$myusername=$_POST['user']; 
$mypassword=$_POST['pass']; 
echo "$myusername";
$sql="SELECT * FROM $tbl_name WHERE email='$myusername' and password='$mypassword'";
$result=mysql_query($sql);
$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 
    session_register("myusername");
    session_register("mypassword"); 
    header("location:.index2.html");
}
else {
    echo "Wrong credentials!";
}

这是我的第一行表格: admins table

我完全输入Korivand.neshat@gmail.com作为用户名,输入123456789作为相关字段中的密码。

1 个答案:

答案 0 :(得分:2)

  

我完全输入Korivand.neshat@gmail.com作为用户名

由于表中的记录为"korivand.neshat@gmail.com",如果您的数据库使用区分大小写的比较,那么您输入的用户名不正确。

使用该用户名还可能存在多条记录吗?在这种情况下,您的比较将失败:

if($count==1)

此外,还有一些 非常重要的 备注:

  1. 您的代码大开 SQL注入。使用预准备语句和查询参数而不是执行用户输入作为代码。从reading this开始。
  2. 您将用户密码存储为纯文本。这对用户来说是非常不负责任的。密码应该被单向散列模糊,永远可以任何人检索。您甚至不是系统所有者。
  3. 编辑正如@Fred在下面的评论中指出的那样。您的表单正在使用GET方法:

    <form class="form-login" action = "check.php">
    

    但您正在检查POST值:

    $myusername=$_POST['user'];
    

    要么改变其中一个。