成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

通過代碼實例解析PHP session工作原理

瀏覽:190日期:2022-09-08 14:22:38

這里的介紹主要是基于php語言,其他的語言操作可能會有差別,但基本的原理不變。

1.在php中如何操作session:

session_start(); //使用該函數打開session功能

$_SESSION  //使用預定義全局變量操作數據

使用unset($_SESSION[’key’]) //銷毀一個session的值

簡單地操作,一切都是由服務器實現;由于處理在后臺,一切看起來也很安全。但是session采用什么樣機制,又是怎樣被實現,并且如何來保持會話的狀態的呢?

2.session實現與工作原理

瀏覽器和服務器采用http無狀態的通訊,為了保持客戶端的狀態,使用session來達到這個目的。然而服務端是怎么樣標示不同的客戶端或用戶呢?

這里我們可以使用生活中的一個例子,假如你參加一個晚會,認識了很多人,你會采取什么方式來區分不同的人呢!你可能根據臉型,也有可能根據用戶的名字,

或者人的身份證,即采用一個獨一無二的標示。在session機制中,也采用了這樣的一個唯一的session_id來標示不同的用戶,不同的是:瀏覽器每次請求都會帶上

由服務器為它生成的session_id.

原理很簡單,假設你訪問網頁時就像逛澡堂,第一次進去你是沒有鑰匙的,這個時候你交了錢服務臺就分配一把鑰匙給你,你走到哪里都要帶上,因為這是你身份的唯一標識,接下來你用這把鑰匙可以去打開一個專有的儲物柜存儲你的衣物,游完泳,你再用鑰匙去打開柜子拿出衣物,最后離開游泳池時,把鑰匙歸還,你的這次游泳的過程就是一次session,或者叫做會話,在這個例子中,鑰匙就是session的key,而儲物柜可以理解為存儲用戶會話信息的介質。

那么在web server中如何實現session呢?想必看了上面的例子你會很容易理解,主要是解決兩個問題,一個是鑰匙的問題,一個是存儲用戶信息的問題。對于第一個問題,即什么東西可以讓你每次請求都會自動帶到服務器呢?如果你比較了解http協議,那么答案一目了然,就是cookie,如果你想為用戶建立一次會話,可以在用戶授權成功時給他一個cookie,叫做會話id,它當然是唯一的,比如php就會為建立會話的用戶默認set一個名為phpsessid,值看起來為一個隨機字符串的cookie,如果下次發現用戶帶了這個cookie,服務器就知道,哎呀,剛剛這位顧客來了。

剩下的是解決第二個問題,即如何存儲用戶的信息,服務器知道會話id為abc的用戶來了,那abc想存儲自己的私人信息,比如購物車信息,如何處理?這個時候可以用內存、也可以用文件,也可以用數據庫了,但有個要求是,數據需要用用戶的會話id即可取到,比如php就默認會把會話id為abc的用戶會話數據存儲到/tmp/phpsess_abc的文件里面,每次讀取都要反序列化程序可以理解的數據,寫的時候又需要序列化為持久的數據格式。

較好理解的描述:

session被用于表示一個持續的連接狀態,在網站訪問中一般指代客戶端瀏覽器的進程從開啟到結束的過程。session其實就是網站分析的訪問(visits)度量,表示一個訪問的過程。

session的常見實現形式是會話cookie(session cookie),即未設置過期時間的cookie,這個cookie的默認生命周期為瀏覽器會話期間,只要關閉瀏覽器窗口,cookie就消失了。實現機制是當用戶發起一個請求的時候,服務器會檢查該請求中是否包含sessionid,如果未包含,則系統會創造一個名為JSESSIONID的輸出 cookie返回給瀏覽器(只放入內存,并不存在硬盤中),并將其以HashTable的形式寫到服務器的內存里面;當已經包含sessionid是,服務端會檢查找到與該session相匹配的信息,如果存在則直接使用該sessionid,若不存在則重新生成新的 session。這里需要注意的是session始終是有服務端創建的,并非瀏覽器自己生成的。 但是瀏覽器的cookie被禁止后session就需要用get方法的URL重寫的機制或使用POST方法提交隱藏表單的形式來實現。

簡單介紹一下流程:當客戶端訪問服務器時,服務器根據需求設置session,將會話信息保存在服務器上,同時將標示session的session_id傳遞給客戶端瀏覽器,

瀏覽器將這個session_id保存在內存中(還有其他的存儲方式,例如寫在url中),我們稱之為無過期時間的cookie。瀏覽器關閉后,這個cookie就清掉了,它不會存在用戶的cookie臨時文件。

以后瀏覽器每次請求都會額外加上這個參數值,再服務器根據這個session_id,就能取得客戶端的數據狀態。

如果客戶端瀏覽器意外關閉,服務器保存的session數據不是立即釋放,此時數據還會存在,只要我們知道那個session_id,就可以繼續通過請求獲得此session的信息;但是這個時候后臺的session還存在,但是session的保存有一個過期

時間,一旦超過規定時間沒有客戶端請求時,他就會清除這個session。

下面介紹一下session的存儲機制,默認的session是保存在files中,即以文件的方式保存session數據。在php中主要根據php.ini的配置session.save_handler

來選擇保存session的方式。

這里順便說明一下,如果要做服務器的lvs,即多臺server的話,我們一般使用memcached的方式session,否則會導致一些請求找不到session。

一個簡單的memcache配置:

session.save_handler = memcache

session.save_path = 'tcp://10.28.41.84:10001'

當然如果一定要使用files文件緩存,我們可以將文件作nfs

,將所有的保存session文件定位到一個地方。

剛才講返回給用戶的session-id最終保存在內存中,這里我們也可以設置參數將其保存在用戶的url中。

3.實例問題

現有系統A,B; 假設A系統是可以獨立運行的web系統,即可以和瀏覽器直接處理session, B系統是基于mobile的,需要調用A系統的功能接口,

在保持A不改變的情況下,即登陸驗證,session存儲都不變的情況下,B系統能處理前端用戶的請求。

這里提供的方案是使用PHP實現

在用戶登陸成功后,將保存的session的session-id返回給B系統,然后B系統每次請求其他接口都帶session_id。

A系統在session_start前加上session_id(session_id);

這樣B系統就能安全的調用A

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: PHP
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
久久久久99精品一区| 石原莉奈在线亚洲二区| 三级欧美韩日大片在线看| 精品不卡一区二区三区| 久久蜜桃av一区精品变态类天堂 | 日韩视频一区在线观看| 蓝色福利精品导航| 久久久夜精品| 婷婷综合另类小说色区| 亚洲专区一区| 亚洲黄色在线视频| 中文一区在线| 亚洲一二三四在线| 国产亚洲激情| 亚洲综合图片区| 宅男噜噜噜66一区二区| 亚洲人成网站影音先锋播放| 国产精品v欧美精品v日韩精品| 国产亚洲美州欧州综合国| 你懂的成人av| 欧美激情在线观看视频免费| 欧美国内亚洲| 国产精品久久午夜| 精品96久久久久久中文字幕无| 国产三级一区二区三区| av在线综合网| 久久久久久亚洲综合| 不卡在线观看av| 精品国产精品一区二区夜夜嗨| 成人激情小说网站| 久久蜜桃av一区二区天堂| 欧美在线亚洲综合一区| 国产精品美女一区二区| 91久久在线| 午夜精品福利一区二区三区av| 色综合激情五月| 精品一区二区在线播放| 日韩精品影音先锋| 女人天堂亚洲aⅴ在线观看| 亚洲国产成人自拍| 亚洲国产专区| 亚洲国产aⅴ天堂久久| 久久久久国内| 美女看a上一区| 欧美另类videos死尸| 成人性生交大片免费看在线播放 | 欧美日韩国产综合久久| 国模娜娜一区二区三区| 日韩免费看的电影| 99re这里只有精品视频首页| 中文字幕电影一区| 亚洲一区国产| 精品亚洲国内自在自线福利| 精品国产伦一区二区三区观看方式 | 欧美日韩国产高清一区二区| 国产成人综合亚洲91猫咪| 久久精品视频在线看| 亚洲国产影院| 日本午夜一本久久久综合| 欧美一区二区在线播放| 牛人盗摄一区二区三区视频| 亚洲同性gay激情无套| 欧美中文字幕| 国产电影一区在线| 国产欧美一区二区三区鸳鸯浴| 亚洲精品一级| 美女一区二区三区在线观看| 欧美sm美女调教| 欧美日本不卡高清| 天天亚洲美女在线视频| 欧美日韩国产片| 91丨porny丨国产| 亚洲国产日韩综合久久精品| 欧美精三区欧美精三区| 91免费观看国产| 亚洲午夜电影在线| 欧美一区二区精品在线| 亚洲香蕉网站| 蜜臀精品久久久久久蜜臀| 91麻豆精品国产91久久久更新时间 | 亚洲成人动漫在线免费观看| 欧美日韩不卡在线| 红桃视频国产一区| 老汉av免费一区二区三区| 国产无人区一区二区三区| 久久综合狠狠| 色综合天天综合| 日本最新不卡在线| 国产亚洲成aⅴ人片在线观看| 久久九九99| 91社区在线播放| 日韩成人av影视| 久久综合狠狠综合久久综合88| av成人国产| 高清视频一区二区| 亚洲国产一区二区三区| 欧美va在线播放| 性一交一乱一区二区洋洋av| jizz一区二区| 午夜视频一区二区三区| 久久久久久9999| 久久午夜电影| 欧美777四色影| 另类人妖一区二区av| 国产精品欧美久久久久无广告| 欧美亚一区二区| 欧美天天视频| 久久97超碰国产精品超碰| 国产精品伦一区二区三级视频| 欧美性做爰猛烈叫床潮| 国产精品s色| 国产一区二区三区视频在线播放| 中文字幕一区二区三区不卡在线| 正在播放亚洲一区| 久久成人资源| 国产精品二区二区三区| 风间由美性色一区二区三区| 午夜伦欧美伦电影理论片| 国产亚洲美州欧州综合国| 欧美日韩另类一区| 亚洲理伦在线| av一区二区久久| 男女性色大片免费观看一区二区| 亚洲同性同志一二三专区| 日韩精品在线一区二区| 91豆麻精品91久久久久久| 亚洲高清资源综合久久精品| 国产白丝精品91爽爽久久| 日本不卡在线视频| 亚洲免费电影在线| 久久久不卡网国产精品一区| 欧美日韩国产美| 午夜视频在线观看一区二区| 国产精品人妖ts系列视频| 精品久久一区二区| 在线亚洲精品福利网址导航| 亚洲精品一区二| 欧美91视频| 国产精品中文字幕欧美| 亚洲国产日韩一级| 久久久久97国产精华液好用吗| 欧美亚洲日本一区| 国产欧美在线| 欧美日韩国产三区| 成人国产精品免费观看| 韩国v欧美v日本v亚洲v| 麻豆精品国产传媒mv男同 | 国产精品一区在线观看乱码| 亚洲成人午夜电影| 国产亚洲精品中文字幕| 日韩三级视频在线看| 欧美视频在线一区| 午夜在线一区| 亚洲免费成人| 国产精品va| 91污在线观看| 成人激情动漫在线观看| 国产精品99久久久久久似苏梦涵| 一区二区三区在线观看视频| 久久久久久久网| 欧美精品777| 久久先锋资源| 亚洲一区二区在线看| 欧美特黄视频| 成人av手机在线观看| 麻豆高清免费国产一区| 一区二区三区在线观看视频 | 亚洲高清久久久| 国产精品人成在线观看免费| 欧美国产一区视频在线观看| 日韩午夜中文字幕| 欧美另类高清zo欧美| 欧美在线观看视频一区二区| 亚洲综合日韩| 一本一本久久a久久精品综合妖精| 今天的高清视频免费播放成人| 99精品在线观看视频| 成人国产一区二区三区精品| 国产伦精品一区二区三区免费迷 | 国产大片一区二区| 蓝色福利精品导航| 日产精品久久久久久久性色| 亚洲电影中文字幕在线观看| 亚洲国产成人精品视频| 一区二区三区日韩| 中文字幕日韩av资源站| 国产精品私人影院| 欧美不卡一区二区三区| 日韩你懂的在线观看| 欧美sm美女调教| 日韩精品一区二区三区蜜臀| 91精品国产综合久久香蕉的特点| 欧美男男青年gay1069videost | 久久激情视频| 久久国产99| 久久久国产精品一区二区三区| 国产亚洲高清视频| 国产精品久久久免费| 国产伦精品一区二区三区视频孕妇 | 日韩女优电影在线观看|