如何修复从数据库代码获取用户数据的php登录?

时间:2019-04-19 10:53:44

标签: php html

我放弃了,这个php代码仍然有问题。我将在数据库中以密码收到电子邮件。 你能解决这个吗?请帮助我

`$ password =“”;         $ email =“”;         $ valid = 0;

    if (isset($_POST['email'])){
        $email = $_POST['email'];
    }

    if (isset($_POST['password'])){
        $password = md5($_POST['password']);
    }

    $con = mysqli_connect("localhost", "root","", "user");

    $result = mysqli_query($con, "SELECT email,password FROM user");

    if (mysqli_connect_errno()){
        echo "Failed: ". mysqli_connect_error();
    }


    while ($row = mysqli_fetch_row($result)){
        if ($row[3] == $email && $row[5] == $password){
            $valid =  1;
            if(isset($_POST['remember'])){
                setcookie('Home', "true", time()+(30*86400));
            }
        }
    }
        if ($valid != 1){
             echo "<script>window.alert('email atau password salah!')</script>";
         }else {
            echo "<script>window.alert(\"Login success!\")</script>";
             //header('Location:Home.html');
         }




    mysqli_close($con);
?>`

1 个答案:

答案 0 :(得分:1)

基于“ 我将在数据库中获取电子邮件的密码”,听起来mysqli_fetch_row正在返回电子邮件作为结果行中的第六个元素(即$row[5])。

第一件事:留意@Jay Blanchard的建议非常重要“ 永远不要存储纯文本密码! ”实现{{3} },然后插入password_hash()

您是否考虑过使用password_verify?这将返回一个关联数组,因此可以通过名称而不是相对顺序来访问列。

if子句示例为:
 if ($row['email'] == $email && password_verify($password, $row['password']))

对人类来说要容易得多。