2013-02-06 38 views
1

我想知道是否使用SESSION變量將數據從一個PHP頁面傳遞到另一個頁面是有效的。我問這是因爲我認爲SESSIONS僅用於保持用戶登錄到網站,並且可以替代cookie。將數據(非敏感)從一個頁面通過一個URI如members.php?name=Joe&age=28從一個頁面傳遞到另一個會不會更好?是否將會話數據從一個PHP頁面傳遞到另一個有效的頁面?

回答

2

會話對很多事情都有用,而不僅僅是登錄信息。它們非常適合在POST/redirect/GET循環期間保存狀態消息,或者其他任何可以跟蹤用戶會話狀態(因此名稱)的事件 - 但僅限於當前會話,而不是長期永久配置選項。

就效率而言,您需要記住,會話中的任何內容都需要在每個頁面加載時反序列化爲&。存儲名稱和年齡不會增加太多。添加兆字節的圖片上傳可能會很糟糕。

比效率考慮更重要的是要記住會話數據只是暫時持久。如果你想一直知道Joe是28,它應該放在數據庫中。如果它僅在單頁加載時有用,則它應該保留在URL中或被髮送。如果你有興趣記住它幾分鐘,這個會議可能是放置它的地方。

2

取決於你在做什麼。如果該頁面要求信息正常工作,並且不在登錄後面,那麼傳遞查詢字符串是一種可行的方式(例如搜索結果,產品頁面)。如果它在登錄後面,那麼使用會話可以讓您保持網址清潔,並且還會使用戶難以濫用網頁(例如,換出查詢字符串中的數據)。

5

PHP會話將cookie寫入您的瀏覽器,然後將與該會話關聯的數據存儲在磁盤上;它與include()一樣昂貴,以便在下一頁加載中讀取它,這就是說完全無關緊要。

此外,用戶不能更改會話數據,除非您創建允許他們的機制;他們可以很容易地混淆查詢字符串。

簡答:是的,它的高效。

0

是的,您可以在SESSION中存儲數據和消息,並且可以從任何頁面訪問它。但請記住,SESSION使用瀏覽器支持來存儲數據。它們可以由用戶手動刪除

+0

SESSION僅使用瀏覽器存儲會話ID cookie,而不是會話數據。 – Crontab

+0

這就是我所說的 - 它需要瀏覽器支持,SESSION數據存儲在服務器上,但ID在瀏覽器中。如果通過刪除cookie來刪除ID,即使數組密鑰存在,也無法檢索數據 –

相關問題