PHP会话来限制对文件的访问

PHP会话来限制对文件的访问,php,session,session-variables,Php,Session,Session Variables,index.php session_start(); if(isset($_POST['login'])){ $username = mysqli_real_escape_string($con,$_POST['username']); $pass = mysqli_real_escape_string($con,$_POST['userpass']); $sel_user = "select * from users where user_name='$username' AND us

index.php

session_start();

if(isset($_POST['login'])){

$username = mysqli_real_escape_string($con,$_POST['username']);

$pass = mysqli_real_escape_string($con,$_POST['userpass']);

$sel_user = "select * from users where user_name='$username' AND user_password='$pass'";

$run_user = mysqli_query($con, $sel_user);

$check_user = mysqli_num_rows($run_user);

if($check_user>0) {

$_SESSION['loggedIn'] = true;
$_SESSION['user_name']=$username;

header("location:display.php");
die();
}

else {

echo "<script>alert('Username or Password is not correct, please try again!')</script>";

}

}

您好,我正在试图弄清楚为什么我的index.php不允许我正确登录和访问display.php密码和用户名是正确的,但一直将我重定向到index.php知道为什么吗

你为什么不改用饼干呢? 在login.php页面中,而不是:

if($check_user>0) {

$_SESSION['loggedIn'] = true;
$_SESSION['user_name']=$username;

header("location:display.php");
die();
}
这样做:

if($check_user>0) {
    $_SESSION['user_name']=$username;
     $Month = 86400 + time(); 
     setcookie('user', $username, $Month); 
      header("Location:display.php");
}
然后在display.php上

session_start();

if(!$_SESSION['loggedIn']) {
header("location: index.php");
die();
}

那么它现在重定向到哪里了呢?我相信我在index.php中的代码是错误的。即使登录凭据是正确的,我也不会显示。phpha您有存储在clear to DB中的密码吗?o_OYes,我没有在php代码中包含mysqli connect部分。我不想成为这些家伙中的一员,但永远不要以明文形式存储密码,除非你现在就解决这个问题,否则你将来会学到教训:用户不能禁用浏览器上的cookie吗?@ArvinFlores是的,但这是另一回事。您还可以更改浏览器中会话到期/重置的设置。非常感谢您的帮助。我对php相当陌生,所以我甚至不知道用cookies可以做到这一点。我只是好奇你为什么建议吃饼干?会话在某种程度上是低劣的吗?@ArvinFlores cookies存储在客户端,而另一方面的会话存储在服务器上。要进行更深入的研究,请看一下这里:那篇文章肯定澄清了一些事情。非常感谢。在会话中查看上述代码会不会太过分?供我日后参考
session_start();

if(!isset($_COOKIE['user']))
{
header("location:index.php");
die();
}