日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php session 机制,Cookie、Session机制详解及PHP中Session处理

發布時間:2023/12/10 php 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php session 机制,Cookie、Session机制详解及PHP中Session处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

會話機制

Cookie/Session:

在web應用中,常用的會話追蹤機制是Cookie和Session。而Cookie是通過在瀏覽器里記錄確定用戶身份,Session在服務器端記錄信息確定用戶身份。

Http協議:

http協議本身是無狀態的,也就是說我們無法通過http協議來確定該次請求的用戶身份,所以,通常的做法是需要通過Cookie和Session機制確定會話用戶身份。

Cookie

簡介:

Cookie是存儲在客戶端的,用來記錄信息。其實單純來說,僅采用Cookie也是可以追蹤用戶會話,只是這樣安全性會大大降低(例如:最粗暴的將用戶登錄的用戶名、密碼寫入cookie,每次請求驗證用戶名密碼,根據驗證結果決定是否允許進行接下來的業務處理)。

Cookie創建及如何發送給客戶端:

cookie創建:cookie由服務端創建(也就是服務端決定要往cookie寫入什么內容)。在PHP中,當setCookie函數執行后,默認會將cookie寫入到客戶端中。

setCookie('name', 'nameValue');

echo 'success';

當在瀏覽器中執行上述代碼時,會將cookie寫入到瀏覽器中。

Cookie使用:

cookie一般是在登錄成功后,完成寫入,將其返回給客戶端。客戶端下次請

求時會帶入cookie,服務端通過獲取cookie內容進行驗證會話信息。

Cookie有效期及跨域問題:

cookie是可以設置有效期的,默認是瀏覽器關閉時,cookie自動失效。

cookie存在跨域問題(瀏覽器同源策略保護),例如,childB.B.com和Child2B.B.com雖然都在一級域名B.com下,但是由于二級域名不同,所以cookie也無法在Child2B.B.com下使用(這也是為什么前后端分離項目中,不采用cookie、session機制的原因)。

跨域問題解決:

跨域問題可以通過在服務端設置允許cookie訪問的域名或在nginx中配置允許跨域域名Cookie跨域解決方案

header('Access-Control-Allow-Origin: Child2B.B.com');

header('Access-Control-Allow-Credentials: true');

Session:

簡介:

在服務端保存用戶信息,追蹤用戶的會話記錄。

原理分析:

當瀏覽器通過http協議請求服務端時,服務端會為用戶創建session。在創建session時,會檢查是否包含一個唯一的會話id,即sessionId。

(1)若有該sessionId,則表示已經為用戶創建過會話,通過sessionId從session中獲取用戶信息,執行下面的業務處理;

(2)若沒有該sessionId,則表示還未創建過會話,服務端會創建session,為該session關聯唯一的sessionId,將sessionId返回客戶端。

通常情況下,session會和cookie配合使用,即將session生成的sessionId通過cookie寫入瀏覽器。瀏覽器在下次請求時,帶入cookie,服務端通過cookie獲取sessionId,進而獲取session信息。

禁用cookie的sessionId Url重寫:

當瀏覽器禁用cookie時,是沒法通過cookie帶入sessionId的,可以通過將sessionId附著在url中傳入服務端。

在PHP中當php.ini中的session.use_trans_sid = 1時,若瀏覽器禁用cookie會自動將sessionId附著在url上進行傳遞。

PHP對session的處理方式:

PHP默認通過文件的形式存儲session,即生成sessionId時,相應服務器也會生成一個sess_sessionId的文件,在該文件中會存儲session信息。

PHP支持通過session_set_save_handler()函數設置支持的session驅動session_set_save_handler()函數,要求自定義的session處理類需要實現SessionHandlerInterface接口(或者是已經實現了該接口的sessionHandler)。

例如:在tp5中,實現了三種驅動方式:redis/memcache/memcached。

會話機制小結:

總得來說,由于http協議的無狀態,所以需要單獨的會話追蹤機制來保持用戶會話,session是在服務端存儲用戶信息追蹤會話,cookie是在客戶端存儲用戶信息。session在服務端生成sessionId,通常做法是需要通過瀏覽器cookie來存儲,配合使用來確定用戶會話信息。

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的php session 机制,Cookie、Session机制详解及PHP中Session处理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。