在PHP中为同一网站的不同页面生成多个会话ID

时间:2014-10-28 23:32:06

标签: php session

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

1 个答案:

答案 0 :(得分:0)

如果您正在使用会话,请确保每个页面都有session_start()。

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

然后在着陆页上检查 if(isset($ _ SESSION ['user_id'])){

理想情况下,您应该在重定向之前检查$ _SESSION ['user_id']的值是否格式正确。


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