我在PHP项目中遇到了Session和Cookies的问题。 我在这里寻找,但我发现的所有解决方案都无效。
这种情况:我的代码不仅适用于特定服务器。 在该服务器上,每个页面的会话ID都会发生变化。
服务器使用HTTPS,使用phpinfo(),我可以看到:
我尝试了这个简单的代码:
页面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就会改变。