簡體   English   中英

什么是session_id,session_regenerate_id和session_name用於?

[英]What are session_id, session_regenerate_id and session_name used for?

好吧我是一個新手在會議上讓我們想象我們有一個小的登錄網站,

這是一個邏輯

  1. 登錄
  2. 如果密碼正確=使用$ _SESSION [isaloginuser] = 1
  3. 檢查會話以查看if $ _SESSION [isaloginuser] = 1的菜單
  4. 顯示菜單
  5. 用戶想要注銷
  6. 未設定的會議
  7. 破壞會話系統

它用的是什么

session_register
session_destroy
session_unset
session_start

session_idsession_regeneratesession_name在哪里? 在php網站上它說

session_id()用於獲取或設置當前會話的會話ID。

我還是不明白,為什么我們還需要它們呢? 真實環境中它做了什么?

不,你不需要使用它們。 一般來說,你所需要的只是

  • session_start用於啟動會話處理,以及
  • session_destroy用於銷毀存儲的會話數據(這不會修改$_SESSION ),以及
  • session_unset重置$_SESSION變量(但你也可以執行$_SESSION = array() )。

session_idsession_name用於獲取和設置當前會話ID和會話ID名稱(默認為PHPSESSID )。 session_regenerate_id可用於重新生成/更改當前會話的會話ID。 例如,如果您希望每10分鍾刷新一次會話ID,或者在更改與會話關聯的用戶的真實性狀態之后,這可能很有用。

session_regenerate_id()用於防止會話固定。

會話固定意味着以下內容:您訪問網站並檢查您的會話ID。 然后,您操縱另一個用戶使用您的會話ID訪問該站點,然后登錄。現在您以該用戶身份登錄並擁有他的權限,因為您使用的是同一個會話。

為了防止這種情況,請在用戶成功登錄時使用session_regenerate_id()為用戶提供新的會話ID。現在只有他擁有會話ID,並且您的舊會話ID不再有效。

session_register()在5.3中折舊,我建議不要使用。 而只是使用

$_SESSION['varname'] = "value";

session_id它只是用於獲取用於存儲在數據庫中的會話ID,這不是“必要”使用。 session_name,只是設置一個名稱,這不是必需的。 重新生成是如果你想要一個新的id,除非你的應用程序需要它,這也沒有必要,對於登錄會話,我非常懷疑你會使用它。

其他人,我希望你明白他們做了什么(即未設置/破壞)。 但希望能提供一些見解。

會話ID是會話的標識符。 服務器存儲客戶端數據的方式是在cookie中。 此cookie隨每個HTTP請求一起發送到該客戶端的服務器。 PHP將cookie設置為隨機字符串標記。 此令牌標識客戶端並將其與一組鍵值對相關聯。 會話變量的想法是cookie很容易被篡改。 但是,會話ID是隨機字符串,很難復制,從而增加了安全性。

我通常在創建購物籃時使用session_id(),因此我可以跟蹤用戶添加的內容,然后一旦我從支付網關得到支付成功的回復,然后我會使用session_regenerate(),這樣當他們重新開始時我的網站他們以前的籃子是不可見的,對我而言,它就像一個新用戶“進入”商店。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM