PHP脚本,用于检查用户登录时是否未按预期工作



问题

我正在为一个网络系统的管理员构建一个面板。我必须确保,如果黑客知道这台服务器上文件的名称,他们至少在没有登录的情况下无法直接访问某些页面。现在,在查看了用于实现这一点的类似php代码后,我发现在您从数据库中验证了用户的存在后,您启动一个会话,然后存储一个boolean变量,指示该用户是否以true的身份登录到$_SESSION["loggedin"]侧。我在我的login.php文件中确实做到了这一点,并且还包含了一个条件结构,用于检查用户是否登录到我的admin_upload.php文件的顶部。它检查$_SESSION["loggedin"]的值。

我的期望

我预计,每当我在不登录的情况下输入url以直接访问服务器上的admin_upload.php文件时,我都需要先到login.php启动一个会话,然后才能查看该页面,相反,它打开的页面的值应该是从会话为null的登录中获取的。

代码

login.php文件发布在下方

<?php
$conn=mysqli_connect("localhost","root","","rating");
if(!$conn){
echo "Connection to database was unsuccesful";
}
$username="";
$password="";
$username=trim($_GET["p"]);
$password=trim($_GET["q"]);
//echo $password;
$sql="SELECT username from Admin where username="."'".$username."'";
//echo $sql;
$result=mysqli_query($conn,$sql);
if(mysqli_num_rows($result)>0){
$pass="SELECT Password FROM Admin WHERE username="."'".$username."'";
$real_qry=mysqli_query($conn,$pass);
if(mysqli_num_rows($real_qry)>0){
$row=mysqli_fetch_row($real_qry);
$pass=$row[0];
//echo $password;
if(password_verify($password, $pass)){
//start session
session_start();
//store the admn name in a session 
$_SESSION["username"]=$username;
$_SESSION["loggedin"]=true;
echo "password verification passed";

}else{
echo "Incorrect password";
}
}
}else{
echo "No account with that username was found";
}
?>

admin_upload.php发布在下方

<?php
session_start();
//initiaize the session
//check if the user is logged in
if(isset($_SESSION["loggedin"]) && $_SESSION["loggedin"] !== true){
//redirect to welcome.php if false
header("location: login.php");
exit;
}
//session_start();
$name=$_SESSION["username"];
//if he is loged in then display images to be added
include "layout/product_add.php";
?>
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="materialize/css/materialize.min.css"/>
</head>
<body>
</html>

如果用户登录并相应重定向,请提供任何帮助进行检查,不胜感激,谢谢。

您想要更新

if(isset($_SESSION["loggedin"]) && $_SESSION["loggedin"] !== true){

带有

if(!isset($_SESSION["loggedin"]) || !$_SESSION["loggedin"]) {

这验证了$_SESSION["loggedin"]没有设置,或者它的设置为not TRUE,然后它将执行重定向

最新更新