一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - PHP教程 - 簡(jiǎn)單PHP會(huì)話(session)說(shuō)明介紹

簡(jiǎn)單PHP會(huì)話(session)說(shuō)明介紹

2021-02-24 15:52PHP教程網(wǎng) PHP教程

下面小編就為大家?guī)?lái)一篇簡(jiǎn)單PHP會(huì)話(session)說(shuō)明介紹。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

現(xiàn)在程序員愈發(fā)的不容易了,想要精通,必然要尋本溯源,這其實(shí)與目前泛濫的愈發(fā)高級(jí)的語(yǔ)言以及眾多的框架剛好相反,因?yàn)樗鼈冊(cè)诒M可能的掩蓋本源使其簡(jiǎn)單,個(gè)人稱(chēng)之為程序員學(xué)習(xí)悖論。

注:作者接觸web開(kāi)發(fā)和php兩周左右,以下內(nèi)容適合初學(xué)者。

1、導(dǎo)讀

從文題目看,<簡(jiǎn)單PHP會(huì)話(Session)說(shuō)明> 是已經(jīng)圈定了本文的內(nèi)容范圍,試圖闡明Session(文中對(duì)會(huì)話稱(chēng)為Session) 在PHP語(yǔ)言中是如何實(shí)現(xiàn)以及使用的,重點(diǎn)在于基本理解后的使用。

文章思路是首先搞清楚session是什么東西,Session有什么用,Session使用的套路是什么,PHP中是如何使用的。

2、會(huì)話(Session)說(shuō)明

開(kāi)始前,首先推薦一本基礎(chǔ)理論書(shū)《HTTP權(quán)威指南》,是程序員基礎(chǔ)必備知識(shí),作者有電子版,有需要的可以留言。

a. Session的由來(lái)

幾乎每個(gè)人都上網(wǎng),數(shù)以?xún)|計(jì)的數(shù)據(jù)在網(wǎng)絡(luò)中相互傳輸,數(shù)據(jù)之所以能夠安全的傳輸,是基于HTTP協(xié)議的,很是耳熟能詳是吧。其實(shí)HTTP協(xié)議所干的事情就是提供完成你的網(wǎng)絡(luò)訪問(wèn)一系列方法,雙方構(gòu)建了一次訪問(wèn),原則上就是一個(gè)會(huì)話建立了。說(shuō)一個(gè)例子:小明在瀏覽器中輸入https://www.baidu.com/(HTTPS是HTTP的加密版本,相比是增加了SSL加密層),這是小明對(duì)百度發(fā)起了一個(gè)請(qǐng)求,說(shuō):“我要看你的界面”,百度的服務(wù)器們收到信息,信息中包括了小名想干的事情,同時(shí)包括了小明的地址(否則百度不知道把內(nèi)容給誰(shuí)了),服務(wù)器核對(duì)信息OK,對(duì)小明這個(gè)請(qǐng)求進(jìn)行備案,發(fā)送出小名想要的東西,一次完整的請(qǐng)求結(jié)束了。 這就是一次會(huì)話,會(huì)話的核心在于小明的信息備案(其實(shí)還涉及到TCP/IP的連接問(wèn)題,這個(gè)與本文無(wú)關(guān),忽略)。

其實(shí)與其說(shuō)是構(gòu)建了一個(gè)Session,倒不如說(shuō)將一次訪問(wèn)概括為一個(gè)Session。

b. Session能干什么用

從上面內(nèi)容可以得到,每一個(gè)訪問(wèn)都是一個(gè)會(huì)話,服務(wù)器都要備案信息,這是有開(kāi)銷(xiāo)的,同時(shí)呢,也不大可能同一個(gè)人連續(xù)訪問(wèn)十次二十次就構(gòu)建保存十次二十次,一個(gè)是增加開(kāi)銷(xiāo),另一個(gè)是也比較蠢了。也就是說(shuō),一個(gè)人(確切說(shuō)是同一個(gè)電腦和瀏覽器),在某個(gè)特定時(shí)間內(nèi),能夠復(fù)用一個(gè)Session的,為什么在特定時(shí)間內(nèi)呢?因?yàn)镾ession是有默認(rèn)的過(guò)期時(shí)間,過(guò)期后服務(wù)器就清理掉了(如果不這樣,你想想世界那么多人,來(lái)一個(gè)保留一個(gè),太虧)。

ok,既然同一個(gè)人,多次訪問(wèn)都是一個(gè)Session(不要懷疑服務(wù)器無(wú)法判別是同一個(gè)人,具體可以看上面推介的書(shū)),而且每次訪問(wèn)的內(nèi)容都是做備案的,那么也就是說(shuō),你Session周期內(nèi)所有的行為服務(wù)器都是知道的,那么接下來(lái)重要的作用就來(lái)了,服務(wù)器通過(guò)對(duì)你的訪問(wèn)請(qǐng)求分析,能夠獲知到這個(gè)特定用戶(hù)的行為偏好的,通過(guò)做一定的分析,能夠推送一些用戶(hù)喜歡關(guān)心的數(shù)據(jù),廣告定向也就是這么來(lái)的。 

當(dāng)然可能還有其他的用戶(hù),性能等等之類(lèi)的,個(gè)人不是特別理解機(jī)理,這里就這樣。

3、PHP中Session的使用

通過(guò)上面的啰嗦,可以發(fā)現(xiàn),Session這個(gè)概念其實(shí)是在服務(wù)器端發(fā)生的。PHP提供了一系列的配置、函數(shù)等,很好的實(shí)現(xiàn)Session功能。Session支持在 PHP 中是在并發(fā)訪問(wèn)時(shí)由一個(gè)方法來(lái)保存某些數(shù)據(jù).從而使你能夠構(gòu)建更多的定制程序 從而提高你的 web 網(wǎng)站的吸引力. 一個(gè)訪問(wèn)者訪問(wèn)你的 web 網(wǎng)站將被分配一個(gè)唯一的 id, 就是所謂的session id. 這個(gè) id 可以存儲(chǔ)在用戶(hù)端的一個(gè) cookie 中,也可以通過(guò) URL 進(jìn)行傳遞.會(huì)話支持允許你將請(qǐng)求中的數(shù)據(jù)保存在超全局?jǐn)?shù)組$_SESSION中. 當(dāng)一個(gè)訪問(wèn)者訪問(wèn)你的網(wǎng)站,PHP 將自動(dòng)檢查(如果 session.auto_start 被設(shè)置為 1)或者在你要求下檢查(明確通過(guò)session_start()或者隱式通過(guò)session_register()) 當(dāng)前session id 是否是先前發(fā)送的請(qǐng)求創(chuàng)建. 如果是這種情況, 那么先前保存的環(huán)境將被重建.

a. php中session基本用法

通過(guò)為每個(gè)獨(dú)立用戶(hù)分配唯一的Session ID,可以實(shí)現(xiàn)針對(duì)不同用戶(hù)分別存儲(chǔ)數(shù)據(jù)的功能。 會(huì)話通常被用來(lái)在多個(gè)頁(yè)面請(qǐng)求之間保存及共享信息。 一般來(lái)說(shuō),Session ID 通過(guò) cookie 的方式發(fā)送到瀏覽器,并且在服務(wù)器端也是通過(guò)會(huì)話 ID 來(lái)取回會(huì)話中的數(shù)據(jù)。 如果請(qǐng)求中不包含會(huì)話 ID 信息,那么 PHP 就會(huì)創(chuàng)建一個(gè)新的Session,并為新創(chuàng)建的Session分配新的 ID。

Session的工作流程很簡(jiǎn)單。當(dāng)開(kāi)始一個(gè)Session時(shí),PHP 會(huì)嘗試從請(qǐng)求中查找Session ID (通常通過(guò)Session cookie), 如果請(qǐng)求中不包含Session ID 信息,PHP 就會(huì)創(chuàng)建一個(gè)新的Session。 Session開(kāi)始之后,PHP 就會(huì)將Session中的數(shù)據(jù)設(shè)置到 $_SESSION變量中。 當(dāng) PHP 停止的時(shí)候,它會(huì)自動(dòng)讀取$_SESSION中的內(nèi)容,并將其進(jìn)行序列化, 然后發(fā)送給會(huì)話保存管理器器來(lái)進(jìn)行保存。默認(rèn)情況下,PHP 使用內(nèi)置的文件Session保存管理器(files)來(lái)完成Session的保存。 也可以通過(guò)配置項(xiàng)session.save_handler(php.ini中配置項(xiàng)目)來(lái)修改所要采用的Session保存管理器。 對(duì)于文件Session保存管理器,Session會(huì)話數(shù)據(jù)保存到配置項(xiàng)session.save_path (php.ini中配置項(xiàng)目)所指定的位置。可以通過(guò)調(diào)用函數(shù)session_start來(lái)手動(dòng)開(kāi)始一個(gè)會(huì)話。 如果配置項(xiàng)session.auto_start 設(shè)置為1, 那么請(qǐng)求開(kāi)始的時(shí)候,Session會(huì)自動(dòng)開(kāi)始。PHP 腳本執(zhí)行完畢之后,session會(huì)自動(dòng)關(guān)閉。 同時(shí),也可以通過(guò)調(diào)用函數(shù)session_wirte_close() 來(lái)手動(dòng)關(guān)閉會(huì)話。

b. php中session信息在php.ini中配置

這部分內(nèi)容放在這里說(shuō)是因?yàn)椋徽f(shuō)明前面問(wèn)題,鬼知道php.ini中的配置是什么東西。 上面提到的session.save_handler和session.save_path,這兩個(gè)就是php.ini中的配置項(xiàng)目,這里面這塊不細(xì)說(shuō),因?yàn)閜hp手冊(cè)實(shí)在是太詳細(xì)了。本文默認(rèn)模式是files。

c. php中的session機(jī)制

session_start()是session機(jī)制的開(kāi)始,session會(huì)判斷當(dāng)前是否有$_COOKIE[session_name()];session_name()返回保存session_id的COOKIE鍵值,如果不存在會(huì)生成一個(gè)session_id,然后把生成的session_id作為COOKIE的值傳遞到客戶(hù)端.相當(dāng)于執(zhí)行了下面COOKIE 操作。相反,如果存在session_id =$_COOKIE[session_name];然后去session.save_path指定的文件夾里去找名字為'SESS_'.session_id()的文件.讀取文件的內(nèi)容反序列化,然后放到$_SESSION中。

在會(huì)話結(jié)束的時(shí)候,會(huì)執(zhí)行Session寫(xiě)入操作或是手工執(zhí)行session_write_close()操作。

代碼里面銷(xiāo)毀Session一般有三個(gè)方法,    

1. setcookie(session_name(),session_id(),time() -8000000,..); //退出登錄前執(zhí)行

2. usset($_SESSION); //這會(huì)刪除所有的$_SESSION數(shù)據(jù),刷新后,有COOKIE傳過(guò)來(lái),但是沒(méi)有數(shù)據(jù)。

3. session_destroy(); //刪除$_SESSION 刪除session文件以及session_id

附錄,引用網(wǎng)絡(luò)上的一段代碼,作為結(jié)尾吧。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<span style="white-space:pre">  </span>//SESSION初始化的時(shí)候調(diào)用
   function open($save_path, $session_name)
   {
    global $sess_save_path;
    $sess_save_path=$save_path;
    return(true);
   }
 
   //關(guān)閉的時(shí)候調(diào)用
   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);
   }
   //腳本執(zhí)行結(jié)束之前,執(zhí)行寫(xiě)入操作
   function write($id,$sess_data)
   {
 
    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;
   }

以上這篇簡(jiǎn)單PHP會(huì)話(session)說(shuō)明介紹就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持服務(wù)器之家。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产免费一区二区三区 | 91精品国产色综合久久不卡蜜 | 成人天堂入口网站 | 免费看打屁股视频的软件 | 久久中文字幕综合不卡一二区 | 色无月 | chinese野外gay军人 | 貂蝉沦为姓奴小说 | 黑人巨摘花第一次出血 | 免费国产高清精品一区在线 | 动漫精品一区二区三区3d | 国产图片综合区 | 亚洲精品成人AV在线观看爽翻 | 青青青国产在线观看 | 欧美一区二区三区gg高清影视 | 美女和男人免费网站视频 | 亚洲成人免费 | 亚洲国产精品无码中文字幕 | 亚洲国产精品第一区二区三区 | 国产视频自拍一区 | 欧美在线欧美 | 17岁韩国在线观看免费1 | 秋霞理论一级在线观看手机版 | fuqer日本 | 特黄视频 | 亚洲天堂视频在线免费观看 | 蜜桃视频在线观看官网 | 99视频精品全部 在线 | 日本国产一区二区三区 | 亚洲麻豆精品 | 国产51页 | 欧美高清一区 | 荷兰艾优apiyoo | 性夜a爽黄爽 | 国产99久久精品一区二区 | 欧美成人福利视频 | 爆操美女 | 国产人妖ts在线视频网 | 国产偷啪 | 肉搏潘金莲三级18春 | 欧美一级视频在线 |