PHP登录系统(使用会话)

PHP登录系统(使用会话),php,session,login,Php,Session,Login,我正在使用PHP7来做一个关于开发网站的项目。我是PHP新手,现在我在登录会话中遇到了一个问题,当我输入正确的用户名和密码时,它会显示消息“错误的用户名或密码”,并且无法登录。我不知道哪部分出了问题。请帮帮我。我们将不胜感激。这是我的密码 login.php #登录{ 宽度:300px; 边框:1px实心#c8c8c8; 利润率:80px自动; 文本对齐:居中; 字体系列:calibri; 背景#f1f1; 边界半径:4px; 盒影:0.6px灰色; } #登录h2{ 背景:#222; 保证金

我正在使用PHP7来做一个关于开发网站的项目。我是PHP新手,现在我在登录会话中遇到了一个问题,当我输入正确的用户名和密码时,它会显示消息“错误的用户名或密码”,并且无法登录。我不知道哪部分出了问题。请帮帮我。我们将不胜感激。这是我的密码

login.php

#登录{
宽度:300px;
边框:1px实心#c8c8c8;
利润率:80px自动;
文本对齐:居中;
字体系列:calibri;
背景#f1f1;
边界半径:4px;
盒影:0.6px灰色;
}
#登录h2{
背景:#222;
保证金:2倍;
边缘底部:18px;
颜色:#FFF;
字号:18px;
填充:4px;
}
登录
用户名:


密码:



login_process.php

config.php

数据库详细信息

我已经解决了您的问题:尝试下面的代码

login\u process.php

<?php session_start();

   if (!empty($_POST)) 
   {
        extract($_POST);
        $_SESSION['error']=array();

        if (empty($unm) || empty($pwd))
        {
             $_SESSION['error'][]="Please enter username or password";

             header("location:login.php");
        }
        else
        {
            include("include/config.php");

            $q ="SELECT * FROM admin WHERE a_unm='$unm' AND a_pwd='$pwd'";

            $res=mysqli_query($link,$q);

            $row=mysqli_fetch_assoc($res);

            if (!empty($row))
            {
                $_SESSION['admin']['unm']=$row['a_unm'];
                $_SESSION['admin']['pwd']=$row['a_pwd'];
                $_SESSION['admin']['status']=true;

                header("location:index.php");
            }
            else
            {
                 $_SESSION['error'][]="Wrong Username or Password";
                 header("location:login.php");
            }
        }
   }
   else
   {
        header("location:login.php");
   }

?>
<?php

    $link= mysqli_connect("localhost","root","","course_registration_system");

    //mysqli_select_db("course_registration_system",$link);

?>

config.php

<?php session_start();

   if (!empty($_POST)) 
   {
        extract($_POST);
        $_SESSION['error']=array();

        if (empty($unm) || empty($pwd))
        {
             $_SESSION['error'][]="Please enter username or password";

             header("location:login.php");
        }
        else
        {
            include("include/config.php");

            $q ="SELECT * FROM admin WHERE a_unm='$unm' AND a_pwd='$pwd'";

            $res=mysqli_query($link,$q);

            $row=mysqli_fetch_assoc($res);

            if (!empty($row))
            {
                $_SESSION['admin']['unm']=$row['a_unm'];
                $_SESSION['admin']['pwd']=$row['a_pwd'];
                $_SESSION['admin']['status']=true;

                header("location:index.php");
            }
            else
            {
                 $_SESSION['error'][]="Wrong Username or Password";
                 header("location:login.php");
            }
        }
   }
   else
   {
        header("location:login.php");
   }

?>
<?php

    $link= mysqli_connect("localhost","root","","course_registration_system");

    //mysqli_select_db("course_registration_system",$link);

?>


警告:编写您自己的访问控制层并不容易,而且有很多机会使它严重出错。请不要编写您自己的身份验证系统,因为任何现代的同类产品都具有强大的内置功能。至少要遵循并且永远不要将密码存储为纯文本。警告:当使用
mysqli
时,您应该使用和将用户数据添加到查询中。不要使用字符串插值或串联来完成此操作,因为您已经创建了严重的错误。切勿将
$\u POST
$\u GET
或任何用户数据直接放入查询中,如果有人试图利用您的错误进行攻击,这可能是非常有害的。在会话中保存密码也是一个非常糟糕的主意,尤其是因为这里的密码是纯文本。不要这样做。为了澄清上述问题,请查看如果我们将
'或1=1--
作为用户名(
$unm
)传递,则
$q
会变成什么。这允许任何人在不知道单个密码的情况下作为管理员用户进行身份验证。永远不要在任何地方存储纯文本密码,永远不要使用
password\u hash()
password\u verify()
如果你解释OP的代码有什么问题,为什么出错,这个答案会更好,以及如何修复它。仅仅发布一个固定版本并不能真正帮助任何人从错误中吸取教训。谢谢Mohin Mathakia!嘿,史蒂文·陈欢迎,请注明正确答案。所以它对其他人有帮助。
<?php

    $link= mysqli_connect("localhost","root","","course_registration_system");

    //mysqli_select_db("course_registration_system",$link);

?>