2011-04-01 33 views
1

我有一個使用Xampp的本地活動Wordpress站點的副本。我在php.ini中的會話路徑是session.save_path =「C:\ xampp \ tmp」,並且設置這些會話變量的文件如下。在設置會話並重定向之後,會話在回調頁面上爲空。我錯過了什麼?該文件夾在Xammp中爲tmp文件夾可見。PHP會話在回調時爲空頁面

我也有我的主機文件指向域的URL到我的本地主機,如果重要的話。

session_start(); 

$_SESSION['oauth_token'] = $request_token['oauth_token']; 
$_SESSION['oauth_token_secret'] = $request_token['oauth_token_secret']; 

此外,它不工作的現場。

+0

錯誤日誌中的任何錯誤消息? – jeroen 2011-04-02 00:20:27

+0

您是否在回調頁面上執行'session_start()'? – Jon 2011-04-02 00:21:57

+0

回調頁面的URL域是否有所不同?即該網站位於'http:// example.com',重定向頁面位於'http:// www.example.com'。 – PureForm 2011-04-02 01:42:45

回答

7

確保在嘗試在着陸頁上使用會話變量之前調用session_start()。當您重定向時,會導致瀏覽器發送新頁面的新請求。此新請求尚未訪問您在初始請求中使用的會話。調用session_start()可恢復會話,以便您可以使用其中包含的數據。

例如

FirstFile.php:

session_start(); 
$_SESSION['my_variable'] = "my data"; 
header("Location: http://example.com/SecondFile.php"); 

SecondFile.php:

session_start(); // **This line recovers the session** 
echo $_SESSION['my_variable']; // This line will now print "my data" 
+0

你是完全正確的。我想這只是一個普通的頁面,並沒有真正與Wordpress本身相關,我假設會話應該自動創建。 – 2011-04-02 02:31:43

0

你可以避免不得不讀/寫$ _SESSION之前做的session_start()在WordPress。只是這樣做在你的插件或主題的functions.php文件:

if (!session_id()) { 
    add_action('init','session_start'); 
} 

還要注意的是,如果你正在使用你調用一個在session_start(前)以下,它將在許多PHP應用程序的工作,但會造成WordPress的清除您的會話變量一些奇怪的原因:

session_set_cookie_params(0,'/'); 

所以,我消除了聲明,目前在functions.php的使用技巧,現在我的插件和主題支持會話就好了。