PHP无法在登录页面中存储$ _SESSION变量的值或索引。着陆页。起初问题是每个页面请求都生成了一个新的SESSION ID。但即使在该问题解决后,它也无法识别$ _SESSION变量的值或索引。
登录页面代码
if(mysqli_num_rows($data) == 1)
{
setcookie('user_id',$row['user_id'],time()+(60*60*24));
setcookie('username',$row['username'],time()+(60*60*24));
echo $row['user_id'];
$name = $row['username'];
if(!empty($_COOKIE['user_id'])&&!empty($_COOKIE['username']))
header('Location: '."home.php",200);
else
{
$_SESSION['user_id']=$row['user_id'];
$_SESSION['username']= $name;
header('Location: '."home.php",200);
}
}
目标网页代码
<?php
session_start();
if (isset($_SESSION['PHPSESSID'])) {
header('Location: '."index.php",200);
}
else{
echo "Hello".$_SESSION["username"];
}
?>
PHP.ini文件配置
session.use_cookies On On
session.use_only_cookies On On
session.use_strict_mode Off Off
答案 0 :(得分:0)
如果您正在使用会话,请确保每个页面都有session_start()。
如果您的示例脚本在设置会话user_id和名称之前,请调用session_start()。
然后在着陆页上检查 if(isset($ _ SESSION ['user_id'])){
理想情况下,您应该在重定向之前检查$ _SESSION ['user_id']的值是否格式正确。
FYI你应该加死;在header()调用后的行上。您需要使用die来在header()之后停止执行脚本以停止脚本。否则,你的脚本将被执行到最后,这会导致一些奇怪的结果。