2013-03-02 17 views
3

使用本教程http://www.wikihow.com/Create-a-Secure-Session-Managment-System-in-PHP-and-MySQL將會話存儲在mysql中。一切正常。如果會話存儲在存儲在mysql中的文件和會話中,則會比較Cookie。在mysql中存儲會話相關的問題

如果會話存儲在MySQL中,我明白在Cookie中不應該存儲任何值。

刪除所有的cookies,重新加載頁面。

但是,當打開cookie時,我會看到一個cookie名稱_s。

問題。爲什麼有些東西存儲在cookie中,它的含義是什麼(_s)?什麼餅乾(什麼工作)?從_s的cookie值複製並且看到該值與mysql中的值(id)相同。有什麼錯誤的PHP代碼?在這種情況下,將會話存儲在mysql中是沒有用的(如果cookie中有可用的值).....但是請查看每個頁面上重新加載cookie更改中的會話值。它也在mysql中更改,舊值從mysql中刪除。那麼,這是否意味着在任何情況下會話值都會在短時間內存儲在cookie中?

如果會話存儲在文件中。這是否意味着有人從文件中複製會話值,打開cookie,將值粘貼到cookie中,而不知道用戶名和密碼可以在具有某個用戶的憑據的網站中工作?

+0

謝謝。在PHP配置文件中找到session.save_path是/ tmp。但是在/ tmp中沒有看到任何會話文件.... – user2118559 2013-03-02 12:30:59

+0

請參閱http://stackoverflow.com/questions/4009245/session-file-naming – Barmar 2013-03-02 12:34:11

回答

0

將會話存儲在mysql或文件中與用戶角度沒有任何區別。但有兩個反對文件會話的論點:

  • 它是不可縮放的。如果您有多個Web服務器,則會在其中一個上創建文件,但其他文件不可用。因此,如果您使用兩臺服務器,用戶只能在一半時間訪問會話。
  • 如果所有網站共享相同的tmp,共用主機有可能是另一個網站所有者可以訪問您的會話ID。通常情況並非如此,但它可能是一個問題
+0

謝謝!爲什麼有一個cookie,如果我存儲會話在MySQL?...哦,可能是我不明白的權利... Cookie是必要的,無論如何?瀏覽器必須寫入某個地方的會話值才能寫入cookie?我只注意到差異。如果在Cookie中的文件中存儲會話記錄在谷歌分析cookie中。但是,如果存儲在餅乾中的MySQL沒有看到名稱__utma,__utmb等。谷歌分析餅乾存儲在MySQL? – user2118559 2013-03-02 12:38:05

+0

@ user2118559是的,瀏覽器必須保留會話ID並傳遞給網站以保持身份。 Cookie在每種情況下都存儲在瀏覽器中。會議**數據**可以存儲在任何你想要的地方:file,mysql,mongodb,memcache ... – Tchoupi 2013-03-02 16:59:14