2013-03-19 121 views
2

我正在從使用會話管理用戶登錄或不登錄的書中構建基本登錄腳本。使用Cookie與會話進行登錄

這很棒,但是當我關閉瀏覽器並重新打開它時,我必須重新登錄。 而以Facebook爲例,即使關閉了瀏覽器,我仍保持登錄狀態。我猜這是使用cookie完成的。使用cookie安全嗎?這個cookie應該持續多久?有時候網站會明確表示,「請記住在訪問結束時註銷」。爲什麼這是必要的?

目前我的劇本是有點兒像這樣:

session_start(); 

if (is_set($_POST["login_button_pressed"])){ 
    if (form_verified_successfully()){ 
      $user_details = get_user_details_from_database(); 
      $_SESSION['username'] = $user_details['username']; 
    } 
} 

難道是容易修改以上餅乾的工作?如果是這樣,怎麼樣?

感謝

回答

4

一個cookie是保存到一個臨時目錄上的用戶硬盤的小文本文件。這個cookie可以被放置在那裏的瀏覽器訪問。它可以保存諸如先前訪問的URL(用戶閱讀的vs沒有閱讀的帖子),用戶的證書甚至用戶購物車的內容或者他們沒有在論壇中寫完的帖子的數據。您將選擇該系統有效期多久,最常見的是24小時,7天,14天和30天。

A session附加到與Web服務器交互的實際軟件,即瀏覽器,命令提示符或其他應用程序。瀏覽器關閉或應用程序關閉後,會話數據將丟失。

您可能希望讓用戶再次登錄的原因是,您授予訪問權限的數據是私密信息,即15分鐘後抓取計算機的其他用戶不應訪問(銀行,帳戶設置)或您提供給用戶的數據是時間敏感的,您希望強制用戶再次登錄並在返回時收到新數據。

大多數社交網站如Facebook,LinkedIn,Google +,Twitter和其他一些論壇和博客都會爲您提供一個cookie,讓您保持登錄狀態長達一個月或更長時間,以便您輕鬆回來並查看網站併發布到您的個人資料。但是,如果您要更改帳戶設置,他們會提示您再次登錄,並且只會讓您在當前會話期間訪問這些網站的部分內容。這是出於安全原因。

我希望這會有所幫助。要獲得快速參考,請在sessions vs cookies上運行Google搜索。你應該能夠找到相關的文章,無論你使用的任何語言/平臺。有很多關於PHP,Java,.net和其他討論優點,缺點和最佳實踐的文章。

更改爲Cookie: 至於最後一個問題,切換到使用Cookie不應該很難。很有可能它將通過_COOKIE而不是_SESSION來引用,但是您必須告訴cookie哪些信息可以保留以及保持活動狀態的時間。快速谷歌搜索setting cookie [language]應提供大量的教程。用PHP,Java,Spring,.net等替換[language]