2009-10-31 128 views
0

任何人都可以告訴我爲什麼我的$ _SESSION變量不會被帶到另一個使用ajax調用的PHP頁面。AJAX + PHP:會話超時

所有頁面都有session_start();

它的工作我的本地機器上,但是當我把它上傳到我的服務器,它不工作,並刷新它把我帶回到登錄屏幕...

編輯:

會話變量

$_SESSION['user_id'] = $user_id; 
$_SESSION['username'] = $user_email; 
$_SESSION['name'] = $un; 
$_SESSION['login_times'] = $login_time; 
$_SESSION['profile_pic'] = $profile_pic; 

保存一次用戶登錄並當AJAX腳本調用其他PHP:

session_start(); 

$user_id = $_GET['id']; 
$newsfeed_id = $_GET['nf_id']; 
$comment = $_GET['comment']; 

$conn = mysql_connect('localhost', 'admin', 'root') or die(mysql_error()); 
mysql_select_db('main') or die(mysql_error()); 

// insert new comment 

$query = "INSERT INTO newsfeed_comments ". 
"VALUES ('', '{$_SESSION['user_id']}', '{$comment}', '{$newsfeed_id}')"; 

    mysql_query($query) or die(mysql_error()); 

但是在響應文本中沒有返回任何內容,並且$ _SESSION ['username']的值已被取消設置,並且我被重定向回登錄名。

有誰知道問題是什麼?

謝謝!

+0

究竟是不是結轉,某些會話數據或整個會話?請更具體一些。 – 2009-10-31 22:08:44

+0

是否在登錄腳本中調用了'session_start'?你應該跟蹤會話ID是否通過(試試調試代理Fiddler) – 2009-10-31 22:16:59

+0

是的。在session_start();在每一頁的頂部。會話無處不在,當我打電話給AJAX請求時它們只會失敗 – Stephen 2009-10-31 22:18:24

回答

3

所有cookie(包括會話cookie)都有一個路徑參數,用於定義cookie的有效前綴。如果您希望會話對整個域有效,只需將其設置爲「/」即可。

會話cookie參數可以使用session_set_cookie_params來定義。

0

現在我想起來了,這可能是因爲您保存了特定域的SESSION數據。在你的本地主機上,你只是本地主機,但在服務器上,你的會話可能只保存在你網站的特定部分。通過一個額外的參數來指定域。

在輸出登錄頁面上的任何內容之前,你已經完成了session_start()嗎?

會話的配置是在這裏:http://php.net/manual/en/session.configuration.php對不起,你很困惑你正在使用cookies。

嘗試

var_dump($_SESSION); die(); 

每一頁上,看看你有什麼。

你也可以在保存到會話後調用header()嗎?

這是一篇不錯的文章,調試你的情況:http://www.chipmunkninja.com/[email protected]祝你好運!

+0

你是什麼意思?會話數據保存時,登錄腳本,這使用戶到他的主頁..當我評論和刷新頁面時,會話消失。 – Stephen 2009-10-31 22:08:11

+0

我如何傳遞這些參數? – Stephen 2009-10-31 22:19:16

+0

我不調用一個頭()任何地方..在var_dump我得到:array(0){} – Stephen 2009-10-31 22:31:25

0

我想出了問題所在......這真的很令人沮喪,但它是一個快速修復。

我有3個目錄

/< - 根 /AJAX < - 阿賈克斯PHP文件 /JS < - 爲JavaScript文件

我將請求發送到AJAX/comment.php並處理目錄ajax /作爲不同的域。所以我把我所有的Ajax php文件移動到根目錄下,並將它們重命名爲ajax_File.php並編輯了javascript,現在它可以工作。

這真的很糟糕,但是任何人都知道是否有辦法讓它在子目錄中工作,因爲這非常令人沮喪。

+0

檢查我的答案,這應該有所幫助。 – 2009-11-01 00:48:59