[英]What are session_id, session_regenerate_id and session_name used for?
好吧我是一個新手在會議上讓我們想象我們有一個小的登錄網站,
這是一個邏輯
它用的是什么
session_register
session_destroy
session_unset
session_start
session_id
和session_regenerate
或session_name
在哪里? 在php網站上它說
session_id()用於獲取或設置當前會話的會話ID。
我還是不明白,為什么我們還需要它們呢? 在真實環境中它做了什么?
不,你不需要使用它們。 一般來說,你所需要的只是
session_start
用於啟動會話處理,以及 session_destroy
用於銷毀存儲的會話數據(這不會修改$_SESSION
),以及 session_unset
重置$_SESSION
變量(但你也可以執行$_SESSION = array()
)。 session_id
和session_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.