PHP:会话和Cookie不起作用(每个页面的会话ID更改)

时间:2016-10-25 15:06:14

标签: php session cookies https

我在PHP项目中遇到了Session和Cookies的问题。 我在这里寻找,但我发现的所有解决方案都无效。

这种情况:我的代码不仅适用于特定服务器。 在该服务器上,每个页面的会话ID都会发生变化。

服务器使用HTTPS,使用phpinfo(),我可以看到:

  • 启用会话支持
  • session.auto_start已关闭
  • session.cookie_httponly已关闭
  • session.cookie_secure已关闭

我尝试了这个简单的代码:

页面set.php:

<?php
session_start();
setcookie("testc", "test cookie", time()+3600, '/');

$session_id = session_id();
echo "SESSION id: ".$session_id."<br>";

$_SESSION["test"] = "Test session" ;

if ( !is_writable(session_save_path()) ) {
   echo '<br>Session save path "'.session_save_path().'" is NOT writable!'; 
}
else{
    echo '<br>Session save path "'.session_save_path().'" is writable!';
}
?>

页面get.php:

<?php
session_start();
$session_id = session_id();
echo "SESSION id: ".$session_id."<br>";

if( isset($_SESSION["test"]) ){
    echo "<br>Test session variable exists:<br>";
    echo $_SESSION["test"];
}
else{
    echo "<br>Test session variable not exists";
}
if( isset($_COOKIE["testc"]) ){
    echo "<br>Cookie:<br>";
    echo $_COOKIE["testc"];
}
else{
    echo "<br>Cookie not exist";
}   

if ( !is_writable(session_save_path()) ) {
   echo '<br>Session save path "'.session_save_path().'" is NOT writable!'; 
}
else{
    echo '<br>Session save path "'.session_save_path().'" is writable!';
}   
?>

set.php的输出:

SESSION id: q1340a8g2aa3op7v3od3glgkt6
Session save path "/var/lib/php5/sessions" is writable!

get.php的输出:

SESSION id: qu12anislkan3r4vr46rqlopp3
Test session variable not exists
Cookie not exist
Session save path "/var/lib/php5/sessions" is writable!

如果我重新加载一个页面(get.php或set.php),则会话ID仅对该页面相同。

可能是什么问题? 非常感谢。

更新: 我发现会话ID也在同一页面中更改。我看到了相同的会话ID,因为服务器给了我一个缓存版本的页面。实际上,如果我向地址添加GET随机参数,会话ID就会改变。

0 个答案:

没有答案