php mysql登录系统问题

时间:2016-06-13 12:00:22

标签: php mysql

我想我错过了一个小细节,但我无法弄清楚是什么。我的数据库100%确定连接。我的register.php页面完美地加载数据。当我尝试设置登录系统时,我得到相同的回声"无效的电子邮件或密码"我输入好的信息或不好(只是为了检查)。在某一点上。

我更改了代码,看看我是否可以将数据从我的数据库发布到我的页面,并且它运行良好,所以我猜我的PDO连接是好的。那么为什么我总是在两种情况下都有相同的回声呢?

<?php

if (isset($_POST['submit'])){

$db_server = "localhost";

$db_user = "root";

$db_password = "";

$db_name = "newsite";

try{

$conn = new PDO("mysql:host=$db_server;dbname=$db_name", $db_user, $db_password);

$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    }
catch(PDOException $e){

        echo "Connection failed: " . $e->getMessage();
    }


if (!empty($_POST['email']) && !empty($_POST['password'])){

$req = $conn->prepare('SELECT id,email, password FROM users_tb WHERE email= :email');

 $req->bindParam(':email',$_POST['email']);

 $req->execute();

 $result= $req->fetch(PDO::FETCH_ASSOC); 

  if (count($result)>0 && password_verify($_POST['password'], $result['password'])){

    echo "Alleluia!";

   }else{

    echo "invalid email or password";
   }

}      
}

?>

for

<body>
    <form method="POST" action="login.php">
        <table width="400" border="5" align="center">
            <tr>
                <td colspan="5">Login</td>
            </tr>
            <tr>
                <td align="center">Email</td>
                <td><input type="text" name="email"></input></td>                   
            </tr>
            </tr>
            <tr>
                <td align="center">Password</td>
                <td><input type="password" name="password"></input></td>                    
            </tr>
            </tr>
            <tr>
                <td><input type="submit" name="submit" value="sign up"></input></td>                    
            </tr>
        </table>        
    </form>
</body>

1 个答案:

答案 0 :(得分:0)

问题是您使用password_verify来验证密码是否与哈希匹配。

查看您的评论虽然您没有存储哈希值,但您存储的是实际密码0987654

因此,在将密码输入数据库时​​,您必须保存

的结果

password_hash("your_password", PASSWORD_DEFAULT)其中your_password是您的密码,而不仅仅是存储0987654

等值

默认情况下,您的哈希值应为60个字符,它应该类似于......

$2a$04$PnJr5Vo/EDwbCV0z16ceyuj.z4Cw..6L/0cfFPgTCPv0un0qBp.qm