为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关关

+0

你在登录页面上有'session_start()'吗? – anson 2014-10-28 23:35:49

+0

让你的'session_start();'通用并且用'include'来调用它;'为什么在登录页面将'$ _SESSION ['username']'赋值给'$ name'? – Xrait 2014-10-29 00:11:54

+0

@andbeyond是会话启动()也包含在登录页面中,作为页面中的第一件事。 – 2014-10-29 11:52:23

确保每一页都已经在session_start()如果你正在使用的会话。

如果您的示例脚本在设置会话user_id和name之前调用session_start()。

然后在着陆页上,检查 如果(isset($ _ SESSION [ 'USER_ID'])){

理想情况下,你应该再检查,对$ _SESSION值[ 'user_ID的']为重定向之前的正确格式。


仅供参考您应该添加死亡;在你的header()调用之后的行上。您需要使用die来停止在header()之后执行脚本,以便停止脚本。否则,你的脚本将被执行到最后,什么会导致一些奇怪的结果。

+0

尝试了你建议的每一件事。没有工作:( – 2014-10-31 00:21:24