繁体   English   中英

无法使用php中的真实密码登录

[英]Can't login with real password in php

我有一个注册表格和登录表格。 我已经在注册表格中使用了md5加密,并且工作正常。 但是,当我尝试使用(123)之类的真实密码登录时,它并没有登录。另一方面,当我在md字段中复制粘贴md5加密时,它也正在登录。请帮助我! 谢谢!

这是我的编码:

<?php
        if (isset($_POST['submit'])) {

            $user_name = $_POST['username'];
            $user_email = $_POST['email'];
            $user_pass = $_POST['password'];

            $query = "SELECT * FROM users where Email = '" . $_POST["email"] . "'";
            $result = $obj->run_query($query);

            if ($count = mysqli_num_rows($result) == 0) {

                $query = "INSERT INTO users (Name,Email,Pass) VALUES ('$user_name','$user_email', md5('$user_pass'))";
                $result = $obj->run_query($query);

                echo "<script>alert('You have successfully Registered!')</script>";
                echo "<script>window.open('welcome.php','_self')</script>";

            } else {

                echo "<script>alert('This user email $user_email is already exist!')</script>";
            }
        }

    // login script
    if (isset($_POST['login'])) {

        $name = $_POST['name'];
        $email = $_POST['email'];
        $password = $_POST['pass'];

        $query = "SELECT * FROM users WHERE Email = '$email' AND Pass = '$password'";
        $result = $obj->run_query($query);

        if ($count = mysqli_num_rows($result) > 0) {

            $_SESSION['email'] = $email;
            $_SESSION['name'] = $name;

            echo "<script>window.open('welcome.php','_self')</script>";



        }
        else 
        {
            echo "<script>alert('Your email or password is incorrect!')</script>";
        }
    }

?>   

如前所述:您正在比较POST数组中的纯文本$password = $_POST['pass']; 到表中的MD5。

应该读为$password = md5($_POST['pass']);

我还说过, “永远”都不要接受这个。 如果它是实时站点,建议您暂停使用,直到使用安全的“本世纪”哈希函数为止。

MD5已有30多年的历史,现在不再被认为可以安全地用于哈希/存储密码。

请参阅以下内容:

密码

使用以下之一:

其他连结:

有关列长的重要旁注:

如果确实要决定使用password_hash()或crypt,则必须注意,如果当前密码列的长度小于60,则需要将其更改为该长度(或更大)。 手册建议长度为255。

您将需要更改列的长度并以新的哈希值重新开始,以使其生效。 否则,MySQL将静默失败。


您当前的代码也可以进行SQL注入 mysqli与预处理语句一起使用,或将PDO与预处理语句一起使用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM