为PHP中同一网站的不同页面生成多个会话ID
问题描述:
PHP无法在登录页面登录页面&上存储$ _SESSION变量的值。起初问题是,每个页面请求都会生成一个新的SESSION ID。但即使解决了该问题,也无法识别$ _SESSION变量的值或索引。为PHP中同一网站的不同页面生成多个会话ID
登录页面代码
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()如果你正在使用的会话。
如果您的示例脚本在设置会话user_id和name之前调用session_start()。
然后在着陆页上,检查 如果(isset($ _ SESSION [ 'USER_ID'])){
理想情况下,你应该再检查,对$ _SESSION值[ 'user_ID的']为重定向之前的正确格式。
仅供参考您应该添加死亡;在你的header()调用之后的行上。您需要使用die来停止在header()之后执行脚本,以便停止脚本。否则,你的脚本将被执行到最后,什么会导致一些奇怪的结果。
+0
尝试了你建议的每一件事。没有工作:( – 2014-10-31 00:21:24
你在登录页面上有'session_start()'吗? – anson 2014-10-28 23:35:49
让你的'session_start();'通用并且用'include'来调用它;'为什么在登录页面将'$ _SESSION ['username']'赋值给'$ name'? – Xrait 2014-10-29 00:11:54
@andbeyond是会话启动()也包含在登录页面中,作为页面中的第一件事。 – 2014-10-29 11:52:23