首页 > 解决方案 > 管理员登录屏幕不适用于 mysql 数据库

问题描述

即使我输入了正确的密码和数据库中的用户名,我的管理员登录屏幕也无法正常工作,它似乎并不喜欢它,任何人都可以帮助解决我的问题这是我的管理员登录代码

<?php
    session_start();
    include('../config/dbconn.php');
    if($_SERVER["REQUEST_METHOD"] == "POST"){

        $user_unsafe=$_POST['username'];
        $pass_unsafe=$_POST['password'];

        $user = mysqli_real_escape_string($dbconn,$user_unsafe);
        $pass1 = mysqli_real_escape_string($dbconn,$pass_unsafe);

        $pass=md5($pass1);
        $salt="a1Bz20ydqelm8m1wql";
        $pass=$salt.$pass;


        date_default_timezone_set('Asia/Manila');
        $date = date("Y-m-d H:i:s");


        $query=mysqli_query($dbconn,"SELECT * FROM `admin` WHERE username='$user' AND password='$pass'");
        $res=mysqli_fetch_array($query);
        $id=$res['user_id'];

        if (mysqli_num_rows($query)<1){
            $_SESSION['msg']="Login Failed, User not found!";
            header('Location:admin_login_page.php');
        }

        else{
            $res=mysqli_fetch_array($query);
            $_SESSION['id']=$res['user_id'];
            header('Location: admin_index.php');

            $_SESSION['id']=$id;
            $remarks="has logged in the system at ";
            mysqli_query($dbconn,"INSERT INTO logs(user_id,action,date) VALUES('$id','$remarks','$date')")or die(mysqli_error($dbconn));
            }
        }
?>

标签: phpmysqlmysqli

解决方案


你打mysqli_fetch_array了两次电话——一次在 the 之前if,一次在else块中。由于查询最多应返回一行,因此第二次提取将失败。

附带说明一下,在构造 SQL 查询时不应使用字符串操作,因为这样会使代码容易受到 SQL 注入攻击。您应该考虑改用准备好的语句


推荐阅读