亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

PHP SESSION機制的理解與實例

2024-05-05 00:07:51
字體:
來源:轉載
供稿:網友

PHP SESSION的保存機制有兩種方式,session.save_handler = filessession.save_handler = user,具體選用哪種方式保存,可以通過配置php.ini文件實現。

一、使用讀寫文件的方式保存 SESSION 數據(session.save_handler = files)

1、 session_start()

(1). session_start()是session機制的開始,它有一定概率開啟垃圾回收,因為session是存放在文件中,PHP自身的垃圾回收是無效的,SESSION的回收是要刪文件的,這個概率是根據php.ini的配置決定的,但是有的系統是 session.gc_probability = 0,這也就是說概率是0,而是通過cron腳本來實現垃圾回收。

session.gc_probability = 1session.gc_divisor = 1000session.gc_maxlifetime = 1440//過期時間 默認24分鐘//概率是 session.gc_probability/session.gc_divisor 結果 1/1000, //不建議設置過小,因為session的垃圾回收,是需要檢查每個文件是否過期的。session.save_path = //好像不同的系統默認不一樣,有一種設置是 "N;/path"//這是隨機分級存儲,這個樣的話,垃圾回收將不起作用,需要自己寫腳本

(2). session會判斷當前是否有$_COOKIE[session_name()];session_name()返回保存session_id的COOKIE鍵值,這個值可以從php.ini找到

session.name = PHPSESSID //默認值PHPSESSID

(3). 如果不存在會生成一個session_id,然后把生成的session_id作為COOKIE的值傳遞到客戶端。

相當于執行了下面COOKIE 操作,注意的是,這一步執行了setcookie()操作,COOKIE是在header頭中發送的,這之前是不能有輸出的,PHP有另外一個函數 session_regenerate_id(),如果使用這個函數,這之前也是不能有輸出的。

setcookie(session_name(),  session_id(),  session.cookie_lifetime,//默認0  session.cookie_path,//默認'/'當前程序跟目錄下都有效  session.cookie_domain,//默認為空  )

(4). 如果存在那么session_id = $_COOKIE[session_name]; 然后去session.save_path指定的文件夾里去找名字為'SESS_' . session_id()的文件;讀取文件的內容反序列化,然后放到$_SESSION中。

2、為$_SESSION賦值

比如新添加一個值$_SESSION['test'] = 'blah'; 那么這個$_SESSION只會維護在內存中,當腳本執行結束的時候,用把$_SESSION的值寫入到session_id指定的文件夾中,然后關閉相關資源。

這個階段有可能執行更改session_id的操作,比如銷毀一個舊的的session_id,生成一個全新的session_id,一半用在自定義 session操作,角色的轉換上,比如Drupal.Drupal的匿名用戶有一個SESSION的,當它登錄后需要換用新的session_id。

if (isset($_COOKIE[session_name()])) { setcookie(session_name(), '', time() - 42000, '/');//舊session cookie過期}session_regenerate_id();//這一步會生成新的session_id//session_id()返回的是新的值

3、寫入SESSION操作

在腳本結束的時候會執行SESSION寫入操作,把$_SESSION中值寫入到session_id命名的文件中,可能已經存在,可能需要創建新的文件。

4、銷毀SESSION

SESSION發出去的COOKIE一般屬于即時COOKIE,保存在內存中,當瀏覽器關閉后,才會過期,假如需要人為強制過期,比如 退出登錄,而不是關閉瀏覽器,那么就需要在代碼里銷毀SESSION,方法有很多

  • setcookie(session_name(), session_id(), time() - 8000000, ..);//退出登錄前執行
  • usset($_SESSION);//這會刪除所有的$_SESSION數據,刷新后,有COOKIE傳過來,但是沒有數據。
  • session_destroy();//這個作用更徹底,刪除$_SESSION 刪除session文件,和session_id

當不關閉瀏覽器的情況下,再次刷新,后兩者都會有COOKIE傳過來,但是找不到數據

二、自定議session處理機制(session.save_handler = user)

用戶自定義session處理機制,更加直觀

* session_set_save_handler('open', 'close', 'read', 'write', 'destroy', 'gc'); 

1、session_start()

執行open($save_path, $session_name)打開session操作句柄;$save_path 在session.save_handler = files的情況下它就是session.save_path,但是如果用戶自定的話,這個兩個參數都用不上,直接返回TRUE

執行read($id)從中讀取數據;這個參數是自動傳遞的就是session_id(),可以通過這個值進行操作。

2、腳本執行結束

執行

write($id, $sess_data) //兩個參數,很簡單

3、假如用戶需要session_destroy()

先執行destroy.在執行第2步

一個實際例子:

//SESSION初始化的時候調用function open($save_path, $session_name){ global $sess_save_path; $sess_save_path = $save_path; return(true);}//關閉的時候調用function close(){ return(true);}function read($id){ global $sess_save_path; $sess_file = "$sess_save_path/sess_$id"; return (string) @file_get_contents($sess_file);}//腳本執行結束之前,執行寫入操作function write($id, $sess_data){ echo "sdfsf"; global $sess_save_path; $sess_file = "$sess_save_path/sess_$id"; if ($fp = @fopen($sess_file, "w")) { $return = fwrite($fp, $sess_data); fclose($fp); return $return; } else { return(false); }}function destroy($id){ global $sess_save_path; $sess_file = "$sess_save_path/sess_$id"; return(@unlink($sess_file));}function gc($maxlifetime){ global $sess_save_path; foreach (glob("$sess_save_path/sess_*") as $filename) { if (filemtime($filename) + $maxlifetime < time()) {  @unlink($filename); } } return true;}

補充——涉及函數

session_start();// 開啟session回話,其中session_id()的值是一次獨立會話的標志session_name(); // 默認是PHPSESSID,在php.ini文件中可以自行配置。session_id(); // 在cookie中的體現是,session_name為鍵,session_id為值setcookie(); // 要想起作用,必須有頁面的刷新session_destory(); // session_destroy — 銷毀一個會話中的全部數據

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩黄色高清视频| 国产成人精品a视频一区www| 国产精品视频区| 久久国产精品久久久| 日本欧美黄网站| 日本精品免费一区二区三区| 亚洲变态欧美另类捆绑| 欧美日韩亚洲一区二| 久久亚洲综合国产精品99麻豆精品福利| 日韩精品极品视频| 69**夜色精品国产69乱| 成人h片在线播放免费网站| xvideos亚洲| 亚洲精品国产成人| 成人午夜激情免费视频| 成人黄色av免费在线观看| 免费不卡在线观看av| 日韩中文字幕在线观看| 美女国内精品自产拍在线播放| 国产69精品久久久久久| 欧美日韩综合视频| 久久亚洲精品小早川怜子66| 欧美激情伊人电影| 久久久久日韩精品久久久男男| 一区二区三欧美| 国产999精品| 欧美高清在线播放| 日韩av中文字幕在线免费观看| 精品国产乱码久久久久久婷婷| 国产精品国产亚洲伊人久久| 国产精品www| 久久国产精品久久久久久| 少妇久久久久久| 欲色天天网综合久久| 日韩av免费一区| 欧美午夜丰满在线18影院| 国产亚洲成精品久久| 日韩久久免费视频| 欧美性猛交xxxx免费看久久久| 欧美另类极品videosbestfree| 精品久久久久久久久中文字幕| 国产成人精品久久二区二区| www.久久草.com| 在线观看久久久久久| 国产婷婷97碰碰久久人人蜜臀| 日韩国产中文字幕| 国产精品第8页| 亚洲国产高清高潮精品美女| 日韩av资源在线播放| 4438全国亚洲精品在线观看视频| 国产精品麻豆va在线播放| 欧美性猛交xxxxx免费看| 久久夜色精品国产欧美乱| 国产mv免费观看入口亚洲| 在线电影中文日韩| 亚洲一区国产精品| 清纯唯美日韩制服另类| 国产99视频精品免视看7| 精品久久久久久久久久久久久| 一区国产精品视频| 少妇高潮久久久久久潘金莲| 亚洲va欧美va在线观看| 亚洲成色www8888| 91久久国产精品91久久性色| 热re91久久精品国99热蜜臀| 亚洲图片在线综合| 欧美午夜视频一区二区| 久久人人爽人人爽爽久久| 亚洲影影院av| 清纯唯美亚洲激情| 日韩www在线| 久久精品国产综合| 久久九九免费视频| 欧美大胆在线视频| 欧美激情喷水视频| 国产精品欧美日韩久久| 亚洲女人天堂成人av在线| 亚洲精品乱码久久久久久按摩观| 国产aⅴ夜夜欢一区二区三区| 国产97在线|日韩| 亚洲欧美在线播放| 国产999精品| 久久久av一区| 日韩av在线电影网| 97国产suv精品一区二区62| 97超级碰在线看视频免费在线看| 欧美精品免费看| 中文字幕免费精品一区| 亚洲最大福利网| 欧美刺激性大交免费视频| 九九视频这里只有精品| 在线视频日本亚洲性| 国产视频精品va久久久久久| 91久久精品久久国产性色也91| 欧美视频免费在线| 欧美一级电影免费在线观看| 日韩最新av在线| 久久青草精品视频免费观看| 亚洲最大的网站| 国产在线不卡精品| 亚洲视屏在线播放| 欧美成人合集magnet| 欧美视频裸体精品| 亚洲精品日韩在线| 国产精品网站大全| 综合国产在线观看| 久久综合色影院| 欧美精品在线第一页| 久久国产精彩视频| 国产精品视频久久久久| 亚洲3p在线观看| 国模精品视频一区二区三区| 欧美极品第一页| 成人乱人伦精品视频在线观看| 国产成人精品电影| xxxxx成人.com| 免费99精品国产自在在线| 日本一欧美一欧美一亚洲视频| 国内外成人免费激情在线视频| 久久久久久久久久久免费精品| 日本久久久久久久久久久| 亚洲欧美中文日韩在线| 97视频免费在线观看| 国产视频精品xxxx| 日韩欧美在线播放| 国产精品视频中文字幕91| 欧美成人精品h版在线观看| 日韩精品一区二区视频| 性欧美亚洲xxxx乳在线观看| 国产精品第1页| 亚洲a成v人在线观看| 亚洲成人av片在线观看| 亚洲欧美中文日韩在线| 日韩欧美亚洲成人| 日韩中文字幕在线免费观看| 91网站在线看| 亚洲精品一区中文| 91在线直播亚洲| 在线看国产精品| 国产做受69高潮| 国产91精品久久久久久| 国产欧美精品一区二区三区-老狼| 性欧美xxxx视频在线观看| 欧美裸体男粗大视频在线观看| 精品久久久久久国产| 成人久久久久爱| 日韩中文字幕网站| 亚洲黄色片网站| 中文字幕一区日韩电影| 国产精品视频久久久| 国内精品久久久久久影视8| 精品国产老师黑色丝袜高跟鞋| 成人网在线免费看| 亚洲精品小视频在线观看| 91在线观看免费| 亚洲精品99久久久久| 亚洲精品国产精品乱码不99按摩| 欧美性生交大片免网| 国产91对白在线播放| 亚洲精品久久久久久久久久久久久| 性色av一区二区三区红粉影视| 国产成人在线视频| 亚洲国产精品va在线| 另类天堂视频在线观看|