Php 我做了一个登录表单,但我遇到了一个问题,那就是我的密码接受小写字母和大写字母

Php 我做了一个登录表单,但我遇到了一个问题,那就是我的密码接受小写字母和大写字母,php,mysql,session,input,passwords,Php,Mysql,Session,Input,Passwords,我没有登录表单,但我遇到了一个问题,那就是我的密码接受小写字母和大写字母。谁能告诉我如何解决这个问题 <?php include("config.php"); if(isset($_POST['login'])) { $username=$_POST['username']; $password=$_POST['password']; $qry="select * from admin where username='$username' and passwor

我没有登录表单,但我遇到了一个问题,那就是我的密码接受小写字母和大写字母。谁能告诉我如何解决这个问题

<?php
include("config.php");
if(isset($_POST['login']))
  {
    $username=$_POST['username'];
    $password=$_POST['password'];
    $qry="select * from admin where username='$username' and password='$password'";
    $res=mysqli_query($con,$qry);
    $len=mysqli_num_rows($res);
    if($len>=1)
      {
        $user_id=mysqli_fetch_assoc($res)['id'];
        $_SESSION['user_id']=$user_id;
        $_SESSION['message']=$user_id;
        $_SESSION['logout']="";
        echo"<script>"; 
        echo"window.location.href='admin/dashboard.php';";
        echo"</script>";
      }
}

  • 不要按原样存储密码。改为使用一些散列,并将刚刚散列的密码与存储的散列密码进行比较

  • 默认情况下,MySQL使用不区分大小写的排序规则。你可以改变它,但在这种情况下没有意义。正确的算法是:

    • 在数据库端按用户名或密码选择用户
    • 比较PHP端的密码哈希值
      在这种情况下,您不关心字段大小写敏感度。大写字符串的哈希值将不同于小写字符串的哈希值

  • 顺便说一下,您的代码容易受到SQL注入的攻击。我建议使用预先准备好的语句。

    不要以纯文本形式存储密码。相反,请使用和来存储和检查它们。还请注意,决不能在SQL语句中直接使用用户输入!您应该改为使用,将
    $\u POST
    变量绑定到参数。鉴于上述代码,您存在严重的安全漏洞。有关如何防止PHP中的SQL注入的更多信息,请参阅:)
    mysqli_fetch_assoc($res)['id']
    <我觉得它不会做您可能想要得到的事情,它是它的“id”,对吗?问题不清楚。