我一會兒回來我發貼this question。我用AJAX腳本更新了這個問題,該腳本工作了大約1周。基本上我可以使用AJAX腳本中的session_start()
,然後我可以訪問我需要的會話變量。AJAX腳本停止記憶會話
這真的很奇怪,但是週末過後我進來了,今天早上這個腳本不再工作了。這是非常簡單的,在這裏:
<?php
session_start();
$ajax_connection = mysql_connect('10.X.X.X',$_SESSION['username'],$_SESSION['password']);
$result_set = array();
while ($result_set[] = mysql_fetch_assoc($results)){
// do nothing
}
echo json_encode($results);
?>
上週這個工作得十分完美,而現在我的錯誤日誌中我得到的Undefined index: username
和Undefined index: password
警告。當然,MySQL連接還沒有建立。所以這個腳本沒有運行與原始連接相同的會話。我使用error_log(session_id())
來檢查父頁面和AJAX腳本的ID,果然它們是不同的。當我重新加載頁面並再次嘗試時,頁面和AJAX腳本的ID分別保持不變,但它們應該是相同的ID,而不是兩個不同的ID。
無論如何,有沒有人有任何想法,爲什麼這不會工作了,工作了一個多星期後?
爲什麼要將mysql連接信息存儲在會話變量中? – 2012-03-26 12:44:06
@ N.B。那是因爲它有效。我還有什麼可以獲得AJAX腳本的連接信息? – 2012-03-26 12:47:35
是什麼阻止您將包含數據庫憑證的文件包含到您的AJAX腳本中?對於10 000個用戶,您將使用相同的信息填寫會話。這不是真的可行嗎?它顯然也會給你帶來問題。因此,這意味着一個糟糕的設計決定。我可以繼續討論它在共享主機等方面是不安全的,但是我不會這麼做,這只是糟糕的設計決定,因爲會將數據庫信息存儲在會話中。 – 2012-03-26 13:08:49