php - 我的密码接受大小写字母

标签 php mysql passwords

<分区>

我做了一个注册和登录表单,但我遇到了一个问题,即我的密码接受小写字母和大写字母。谁能告诉我如何解决这个问题。 这是我下面的确认注册码。在密码工作之前是否必须对密码进行哈希处理。我是 php 新手

<?php 
if(isset($_POST['register'])){
    $username = trim(mysqli_real_escape_string($connection, $_POST['username']));
    $lastname = trim(mysqli_real_escape_string($connection, $_POST['lastname']));
    $email = trim(mysqli_real_escape_string($connection, $_POST['email']));
    $password = trim(mysqli_real_escape_string($connection, $_POST['password']));
    $password1 = trim(mysqli_real_escape_string($connection, $_POST['password1']));
$sql = "SELECT email FROM users WHERE email='$email'" ;
$result = mysqli_query($connection, $sql) or die($mysqli->error());
if ( $result->num_rows > 0 ) {
 echo'
        <script type = "text/javascript">
             alert("Email Address alrady exists ")
            window.location.href = "register.php"
        </script> '; 
        exit();
}
else {                  
if ($password === $password1){
     // add the user  if password match 
    $query = "INSERT INTO users(firstname, lastname, email, pass)
                VALUES ('{$username}','{$lastname}', '{$email}', '{$password}') ";
     $runNewUser = mysqli_query($connection, $query);
     if($runNewUser){
         echo'
             <script type = "text/javascript">
            window.location.href = "getmessage.php"
             </script>';        
     }else{
         echo'
             <script type = "text/javascript">
             alert("Error creating user. Please try again");
             </script>';
     }
}else{
    // trigger error if password do not match
    echo'
     <script type = "text/javascript">
        alert("Password do not match. Please try again ");
     </script>
     ';
    }
}   
}
?>

下面是我的确认登录码

<?php 
if(isset($_POST['ulogin'])){
    $email    = trim(mysqli_real_escape_string($connection, $_POST['email']));
    $pass     = trim(mysqli_real_escape_string($connection, $_POST['pass']));
    $checkUser = "
                SELECT * FROM users
                WHERE email = '{$email}' 
                AND pass = '{$pass}'
            ";
    $runCheck = mysqli_query($connection, $checkUser);
    if(mysqli_num_rows($runCheck) == 1){
        $foundUser = mysqli_fetch_array($runCheck);
        $_SESSION['uid'] = $foundUser['id'];
        $_SESSION['uname'] = $foundUser['firstname'];
        $_SESSION['email'] = $foundUser['email'];
        echo'
        <script type = "text/javascript">
            window.location.href = "dailymessage.php";
        </script>
        ';      
    }else{
        echo'
            <script type = "text/javascript">
                alert("Email address / Password incorect. Please try again");   
            </script>
            ';          
    }   
}
?>

我们将不胜感激。

最佳答案

默认情况下,mysql 是不区分大小写的。 在以下行之后 if ($password === $password1){ 如果条件返回 true(这意味着如果 2 个密码匹配,你应该散列你 $password像这样 $hash = password_hash($password, PASSWORD_DEFAULT); 在这一行 VALUES ('{$username}','{$lastname}', '{$email}', '{$password}') "; 使用 $hash 变量来存储你的哈希密码,就像这样 VALUES ('{$username}','{$lastname}' , '{$email}', '{$hash}') "; 。哈希函数的第二个参数PASSWORD_DEFAULT为哈希算法。默认算法目前是bcrypt,但是将来某个时候可能会添加更强的算法作为默认值,并可能生成更大的字符串。如果您在项目中使用 PASSWORD_DEFAULT,请确保将哈希存储在容量超过 60 个字符的列中。设置列大小为 255 可能是一个不错的选择。您也可以使用 PASSWORD_BCRYPT 作为第二个参数。在这种情况下,结果将始终为 60 个字符长。因此,当您提供密码时,对于您的登录,您应该将其与数据集中的哈希版本进行比较。因此,您首先将 POST 变量放入变量 $password 然后创建另一个变量 $hash = password_hash($password, PASSWORD_DEFAULT); 以生成散列版本并用于检查。请记住,您将散列存储在数据库中,但它是用户登录时获得的明文密码。 password_verify() 函数将普通密码和散列字符串作为其两个参数。如果哈希与指定的密码匹配,则返回 true。

if (password_verify($password,     $hash)) {
    // Success!
}
else {
    // Invalid credentials
}

有关更多信息,您可以阅读此 topic

关于php - 我的密码接受大小写字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51775279/

上一篇:javascript - 将 css 应用于弹出窗口中的表格

下一篇:html - z-index 阻止滚动框在 CSS 中工作

相关文章:

php - 通过 php 显示每日句子并从数据库获取

php - 如果 https 连接,cURL 清空请求数据

php - 需要提交表单两次才能使用 jQuery AJAX 正确发布

php - MySQL 选择两个日期之间的所有日期

Golang JSON 数组

php - 计算不可数对象 PHP 7.2

php - 有大循环的空白页

mysql - mysql 驱动程序错误 : javax. servlet.ServletException : java. lang.ClassNotFoundException : com. mysql.jdbc.Driver

html - 一个网站告诉我我的密码已泄露,这是否意味着该网站也不安全?

matlab - 有没有办法屏蔽 MATLAB 编辑框中的文本?