Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 管理员登录屏幕不适用于mysql数据库_Php_Mysql_Mysqli - Fatal编程技术网

Php 管理员登录屏幕不适用于mysql数据库

Php 管理员登录屏幕不适用于mysql数据库,php,mysql,mysqli,Php,Mysql,Mysqli,我的管理员登录屏幕不工作,即使我在数据库中输入了正确的密码和用户名。它看起来不太像。有人能帮我解决问题吗?这是我的管理员登录代码 <?php session_start(); include('../config/dbconn.php'); if($_SERVER["REQUEST_METHOD"] == "POST"){ $user_unsafe=$_POST['username']; $pass_unsafe=$_POST['p

我的管理员登录屏幕不工作,即使我在数据库中输入了正确的密码和用户名。它看起来不太像。有人能帮我解决问题吗?这是我的管理员登录代码

<?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));
            }
        }
?>

您正在调用
mysqli\u fetch\u array
两次-一次在
if
之前,一次在
else
块中。由于查询最多应返回一行,因此第二次获取将失败


作为旁注,在构造SQL查询时不应使用字符串操作,因为这样会使代码容易受到SQL注入攻击。你应该考虑使用A代替.< /P> <代码> $PASS=MD5($PAS1);<代码>不,不。不,不,不,阅读上面的红色大方框,然后使用。你说“不工作”是什么意思?它会给你“登录失败。找不到用户!”?警告:编写你自己的访问控制层并不容易,而且有很多机会使它严重出错。请不要编写您自己的身份验证系统,因为任何现代的同类产品都具有强大的内置功能。至少要遵循并永远不要将密码存储为纯文本或弱散列(如SHA1或MD5)。警告:使用
mysqli
时,您应该使用and将用户数据添加到查询中。不要使用手动转义和字符串插值或串联来完成此操作,因为这样会创建严重的错误。意外未扫描的数据是一个严重的风险。使用绑定参数不会太冗长,也更容易检查是否正确。除非这完全是出于学术/学习目的,否则不要修复它。这段代码实际上不能保证任何安全,它有几个关键问题,由于这种方法的根本缺陷,很难解决。你对这个代码的意图是什么?它是为了保护某些东西,还是仅仅为了探索和学习?你能告诉我如何修复它吗