【发布时间】:2014-10-28 23:32:06
【问题描述】:
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 开启 开启
session.use_only_cookies 开启开启
session.use_strict_mode 关 关
【问题讨论】:
-
你的登录页面也有
session_start()吗? -
使您的
session_start();通用并使用include '';调用它为什么在登录页面中将$_SESSION['username']分配给$name? -
@andbeyond 是的 session_start() 也包含在登录页面中,作为页面中的第一件事。
-
@BrianS 好吧,当然我可以打电话给我的
session_start();与include '';但这里的想法是,如果我这样做,我将不得不包含登录验证,我认为这将是登录页面上不必要的过载(因为它实际上是登录页面,所以在登录页面上验证这一点)。不过,如果这可以解决问题,那么我肯定会很好。