PHP会话来限制对文件的访问
index.phpPHP会话来限制对文件的访问,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
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();
}