我想跨多個頁面使用會話變量。但是,當我從設置的原始頁面轉到服務器上的另一個頁面時,變量消失。我已經確認變量最初是在第一頁上設置的,但是當我嘗試在後續頁面上訪問它們時,它們沒有任何價值。如果我訪問session_id()
它不同於我在第一頁上設置的那個。IE不通過PHP會話變量
這裏是什麼,我試圖做一個簡化版本: (第一個網頁會話變量被設置)
<?php
ini_set("display_errors", "1");
error_reporting(E_ALL);
session_start();
$_SESSION['id'] = session_id();
header('Location: pagetwo.php');
die();
?>
(第二頁,我嘗試訪問會話變量)
<?php
ini_set("display_errors", "1");
error_reporting(E_ALL);
session_start();
echo "SESSION[id] = ".$_SESSION['id']."<br>";
?>
$_SESSION['id']
回報空白,我有一個輸出錯誤,指出:
注意:未定義指數:ID在C:\ Program Files文件\ Apache軟件基金會\ APACHE2.2 \ htdocs中\ pagetwo.php第5行
現在這裏是事情變得有點怪異。這在所有瀏覽器中都不會發生(只有IE8和Firefox3)。我可以在Chrome 15和Firefox 7中訪問會話變量。另外,我有兩個運行Apache和PHP的不同服務器。我遇到這些問題的服務器運行PHP 5.2.17,但是,使用運行PHP 5.2.9的其他服務器,我可以在所有瀏覽器類型的所有頁面上訪問會話變量。
似乎兩個服務器之間的PHP.ini文件會有所不同,但是,它們之間的會話設置是相同的。
我不確定是否有其他人遇到類似的問題,IE8無法訪問PHP 5.2.17中的會話變量,但我搜索了過去兩天的表單,並且找不到其他任何內容。我希望我只是錯過了一些非常簡單的事情,有人可以指引我走向正確的方向。
使用開發工具,你可能會看到會話cookie不會存儲在IE瀏覽器...會話數據不特定瀏覽器,因爲它是服務器端,但是會話的整個前提是基於cookie。你也應該使用isset()來避免異常。 – Fosco