2010-09-03 51 views
1

我想在一個頁面上設置會話變量,然後將其加載到另一個頁面上。此代碼適用於Windows 7上的Firefox。訪問我的iPod Touch上的相同頁面時不起作用。使用PHP在iPhone/iPod Touch上損壞的會話變量使用PHP

第一頁是這樣的:

session_start(); 
$id = "e0vgrejdmkjbltrdrtqtnjgzmy1cqurfluuzodeyqjlcoey5rx0"; 
$_SESSION['id'] = $id; 

第二頁面包含以下代碼:

session_start(); 
$id = $_SESSION['id']; 
echo "ID is $id"; 

輸出然後示出了如:

ID is 

如果我運行該代碼:

echo "Cookie "; 
print_r($_COOKIE); 
echo "Session "; 
print_r($_SESSION); 

我的Windows機器上的輸出是:

Cookies Array ([__utma] => 118825363.834893446.1282611798.1283521628.1283525684.13 [__utmz] => 118825363.1283397018.9.7.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=spf test [PHPSESSID] => 6333ddae9f0514f7c4744e340a6746d1 [__utmc] => 118825363 [__utmb] => 118825363.5.10.1283525684 [id] => eza3odazrtcxlty5mdutoem2ms05ndqxltrcnzvgrjjbnzrgqn0) Session Array ([id] => ezffmddgmdmxluvcmzmtruvfnc0wmdu4ltrfnzddnevfmdhfnx0) 

,並在我的iPhone的輸出是:

Cookies Array ([PHPSESSID] => 8ec43ead5611dde399d763166926021d [__utma] => 118825363.1927811493.1283218120.1283521676.1283525856.6 [__utmb] => 118825363.1.10.1283525856 [__utmc] => 118825363 [__utmz] => 118825363.1283490501.4.3.utmcsr=(mydomain.com)|utmccn=(referral)|utmcmd=referral|utmcct=/) Session Array ([id] =>) 

沒有錯誤發生,它只是似乎設置$ ID爲 「」 我認爲。這似乎很簡單。有什麼我想念你不能在蘋果設備上做到這一點?

+0

第1頁上的'$ id'是什麼?你如何檢查第2頁上的「$ id」是什麼?你只給了我們一半的故事。 – 2010-09-03 13:57:00

回答

1

區別必須在Cookie中。做print_r($ _ COOKIES); ,你會看到iPad/iPhone出於某種原因不想向你發送cookies,那麼我們就會看到。

+0

好吧,我已經通過這些步驟並添加了這些數據。 – MikeD 2010-09-03 14:37:48

+0

我剛剛發現你應該使用$ _COOKIE而不是$ _COOKIES。我更新了這篇文章。 – MikeD 2010-09-03 14:58:50

+0

爲什麼要做$ id =「e0vgrejdmkjbltrdrtqtnjgzmy1cqurfluuzodeyqjlcoey5rx0」; $ _SESSION ['id'] = $ id; ?請在SESSION數組中嘗試不同的鍵,如uid :-) – BarsMonster 2010-09-03 15:21:53

0

檢查兩個腳本中的session_id()。很可能會由於某些原因iPhone沒有存儲會話cookie,因此每次創建第二個頁面時都會創建一個新會話,而不會從前一個會話存儲id

在iPhone上(或在服務器上,如果無法在電話上執行此操作)使用某種類型的嗅探器來查看相應的Cookie標頭是否來回傳送。

0

您的問題的答案很簡單。

$ _SESSION ['id']是read-only

如果你做​​下一頁它將恢復到它的原始值。

要更改會話ID:

session_id('foo'); 

這是勢在必行session_start()之前調用session_id('foo');

+0

我只是試圖存儲一個名爲id的變量,它與「會話ID」無關。所以我從你的評論中發現,我可以用一個不同的名字,所以我用: '$ _SESSION ['new_id'] = $ id;' 它仍然沒有工作,嗯。 PHPSESSID從一個頁面更改爲另一個頁面。 – MikeD 2010-09-04 05:47:17

2

解決:我使用的絕對URL而不是相對的。我想這會把所有東西都弄亂。

1

由於禁用了cookie,您無法在iPhone上獲得會話。

請轉到Safari>設置>接受您的iPhone中的Cookie,並將其設置爲接受來自訪問。

然後,您將能夠在PHP中創建會話。