2012-07-09 106 views
0

如果這看起來類似於這裏發佈的其他問題,我忍受了我,我已經通過所有提供的答案,但沒有解決了我的問題。我已將問題減少到最低限度。頭重定向後會話變量丟失

  1. 我有兩頁(page1.php中,使page2.php)
  2. 創建page1.php中會話變量,如果會話變量被設置它,然後將瀏覽器則page2.php
  3. 在第2頁.php瀏覽器應該顯示在Page1中設置的會話變量的值。 php
  4. 我的問題是,page2.php將會話變量視爲未設置。
  5. 我已經試過張貼在堆棧溢出的其他用戶的所有解決方案,你可以從下面的我的代碼,請參閱:

page1.php中

<?php 
//start the session 
session_start(); 

//set the session 
$_SESSION['mysession'] = "Hello"; 


if(isset($_SESSION['mysession'])){ 
    //redirect the person to page 2 
    session_write_close(); 
    header("Location: page2.php?PHPSESSID=".session_id()); 
    exit(); 
} else { 
echo "Session Not Set"; 
} 
?> 

使page2.php


<?php 
//start the session 
session_start(); 
session_id($_GET['PHPSESSID']); 

if (isset ($_SESSION['mysession'])) 
    echo $_SESSION['mysession']; 
else 
    echo "Session not set!"; 
?> 
+0

當你讓會發生什麼會話開始時沒有發送/設置ID?標題(「位置:page2。php「);在第1頁和// session_id($ _ GET ['PHPSESSID']);第2頁 – 2012-07-09 14:46:54

+0

會話擴展是否被配置爲讀出'PHPSESSID ='參數?(你通常不會自己進行微操作)。重定向的網址?是否僅使用Cookie測試?Cookie是否已設置? – mario 2012-07-09 14:47:47

+0

第二頁是否在同一個域中? – Razvan 2012-07-09 14:48:17

回答

2

SESSION_ID()需要在session_start之前被稱爲()

如果指定ID,則它將取代目前的會話ID。 session_id()需要在session_start()之前被調用,以達到 的目的。根據會話處理程序的不同,在會話ID內不允許所有字符均爲 。例如,文件會話處理程序 僅允許範圍爲a-z A-Z 0-9,(逗號)和 - (減號)的字符!

注意:當使用會話cookie,指定爲SESSION_ID的ID() 總是會發送一個新的cookie時在session_start()被調用時, 不管當前會話ID是相同的一個是 集。

session_id()-Manual

您以前也可能會檢查您是否能夠基於Cookie的身份驗證集。

請注意,如果用戶發佈url,他們可能會將該會話帶到另一個客戶端。

+0

session_id查詢字符串僅作爲一種解決方法添加,以防萬一沒有設置cookie(我在本站點看到的解決方案),但即使當我離開它時,我也會得到相同的結果。 – 2012-07-09 15:11:16

+0

php會爲你做這個,如果沒有設置cookie,那麼不用擔心。檢查http://www.php.net/manual/en/session.configuration.php#ini.session.use-cookies – worenga 2012-07-09 15:15:38

+0

謝謝,使用phpinfo()和session.use_cookies檢查\t設置爲對 – 2012-07-09 15:27:27

1

page2.php,交換前2行。更改

session_start(); 
session_id($_GET['PHPSESSID']); 

session_id($_GET['PHPSESSID']); 
session_start(); 

Parameters部分here..http://php.net/manual/en/function.session-id.php

+0

謝謝。我交換了行,但得到了相同的結果,「會議未設置」 – 2012-07-09 15:00:23

+0

看到我的意見,關於你是否可能有一個基於cookie的會話處理器積極干擾你的手動設置,我相信這是事實。 – worenga 2012-07-09 15:02:43

+0

@mightyuhu謝謝,我該怎麼做?我還應該提到1.代碼在我的本地主機上工作得很好2.我已經在託管服務器上的不同瀏覽器上嘗試過它,結果相同 – 2012-07-09 15:09:57