PHP session 會(huì)話處理函數(shù)
PHP Session 變量
當(dāng)運(yùn)行一個(gè)應(yīng)用程序時(shí),你會(huì)打開(kāi)它,做些更改,然后關(guān)閉它。這很像一次會(huì)話。計(jì)算機(jī)清楚你是誰(shuí)。它知道你何時(shí)啟動(dòng)應(yīng)用程序,并在何時(shí)終止。但是在因特網(wǎng)上,存在一個(gè)問(wèn)題:服務(wù)器不知道你是誰(shuí)以及你做什么,這是由于 HTTP 地址不能維持狀態(tài)。
通過(guò)在服務(wù)器上存儲(chǔ)用戶信息以便隨后使用,PHP session 解決了這個(gè)問(wèn)題(比如用戶名稱、購(gòu)買商品等)。不過(guò),會(huì)話信息是臨時(shí)的,在用戶離開(kāi)網(wǎng)站后將被刪除。如果需要永久儲(chǔ)存信息,可以把數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中。
Session 的工作機(jī)制是:為每個(gè)訪問(wèn)者創(chuàng)建一個(gè)唯一的 id (UID),并基于這個(gè) UID 來(lái)存儲(chǔ)變量。UID 存儲(chǔ)在 cookie 中,亦或通過(guò) URL 進(jìn)行傳導(dǎo)。
1. 開(kāi)始會(huì)話
在把信息儲(chǔ)存到session之前,首先要開(kāi)啟會(huì)話。php提供了session_start()函數(shù)來(lái)開(kāi)始或者繼續(xù)一個(gè)會(huì)話。定義:
1 bool session_start( void )
調(diào)用如下:
<?php session_start();?> <html> <body></body> </html>
注意:
(1)session_start()函數(shù)必須位于<html>標(biāo)簽之前,也就是該函數(shù)必須在任何輸出前調(diào)用,常常在寫程序時(shí)不注意就多輸入了一個(gè)空格或者回車,這時(shí)就會(huì)報(bào)錯(cuò)。應(yīng)特別注意這一點(diǎn)。(我可是被坑過(guò))
(2)無(wú)論有沒(méi)有成功創(chuàng)建會(huì)話,session_start()函數(shù)都會(huì)返回TRUE,因此使用任何異常處理都不起作用。
(3)還可以啟用配置指令session.auto_start,從而不必執(zhí)行這個(gè)函數(shù),但是這樣的話,每個(gè)php頁(yè)面執(zhí)行時(shí)都會(huì)開(kāi)始或者繼續(xù)一個(gè)會(huì)話。
2.存儲(chǔ)或者讀取會(huì)話
存儲(chǔ)和讀取session變量的正確方法是使用php的 S ESSION變量。 SESSION變量。_SESSION是php提供的全局參數(shù),專門用來(lái)存儲(chǔ)和讀取session。(注意關(guān)聯(lián)數(shù)組的鍵名和普通變量的命名規(guī)則一致)
存儲(chǔ)會(huì)話時(shí),可以對(duì)其直接賦值。
$_SESSION[‘season'] = '秋天';
以上設(shè)置了一個(gè)鍵名為“season”的會(huì)話元素,其值為“秋天”。當(dāng)讀取時(shí),就像調(diào)用普通數(shù)組元素一樣。
下面的兩段代碼顯示怎么存儲(chǔ)并讀取一個(gè)會(huì)話元素。
這是session1.php文件:
<?php /** * Created by PhpStorm. * User: yuxiu * Date: // * Time: : */ if(isset($_POST['submit'])){ session_start(); //開(kāi)始建立一個(gè)會(huì)話 $_SESSION['season'] = $_POST['season']; //存儲(chǔ)會(huì)話數(shù)據(jù) header("Location: session.php"); //應(yīng)特別注意header()里的格式問(wèn)題 } ?> <b>存儲(chǔ)會(huì)話</b> <hr/> 選擇需要設(shè)置的數(shù)據(jù): <form name="form" method="post" action="" id="form" > <select name="season" id="season_select" > <option value="春天">春天</option> <option value="夏天">夏天</option> <option value="秋天">秋天</option> <option value="冬天">冬天</option> </select> <br/> <br/> <br/> <input type="submit" name="submit" value="submit"/> </form>
這是session2.php文件:
<?php /** * Created by PhpStorm. * User: yuxiu * Date: // * Time: : */ session_start(); //建立或者繼續(xù)一個(gè)會(huì)話 $season = $_SESSION['season']; //讀取會(huì)話數(shù)據(jù) echo "<b>讀取會(huì)話</b><br/><br/>"; switch ($season) { case '春天'; echo '現(xiàn)在是綠意盎然的春天!'; break; case '夏天'; echo '現(xiàn)在是熱情四溢的夏天!'; break; case '秋天'; echo '現(xiàn)在是豐收果實(shí)的秋天!'; break; case '冬天'; echo '現(xiàn)在是白雪皚皚的冬天!'; break; default ; echo '對(duì)不起,會(huì)話中沒(méi)有數(shù)據(jù) 或者 不存在該對(duì)話 !'; } ?>
在session1.php中首先使用session_start()創(chuàng)建一個(gè)會(huì)話,然后對(duì)提交的季節(jié)數(shù)據(jù)使用數(shù)組賦值的方式存儲(chǔ),最后使用header()函數(shù)直接跳轉(zhuǎn)到開(kāi)始。在session2.php文件中,也同樣需要session_start()函數(shù)繼續(xù)一個(gè)會(huì)話并利用session數(shù)組調(diào)用會(huì)話信息。
3.銷毀會(huì)話
當(dāng)會(huì)話不再被使用的時(shí)候,就需要人為的銷毀它,雖然php有自動(dòng)銷毀會(huì)話的功能,但這樣會(huì)使程序的效率變低??梢允褂胾nset()函數(shù)或者session_destroy()函數(shù)。
<?php unset($_SESSION['season']); ?>
或者:
<?php session_destroy(); //注意,使用這個(gè)函數(shù)將重置session數(shù)組,即失去所有的已經(jīng)儲(chǔ)存的session數(shù)據(jù) ?>
- php中session_id()函數(shù)詳細(xì)介紹,會(huì)話id生成過(guò)程及session id長(zhǎng)度
- php使用MySQL保存session會(huì)話的方法
- php使用MySQL保存session會(huì)話的方法
- php實(shí)現(xiàn)session自定義會(huì)話處理器的方法
- PHP會(huì)話控制:Session與Cookie詳解
- 一個(gè)嚴(yán)格的PHP Session會(huì)話超時(shí)時(shí)間設(shè)置方法
- 使用PHP會(huì)話(Session)實(shí)現(xiàn)用戶登陸功能
- PHP session會(huì)話的安全性分析
- 推薦學(xué)習(xí)php sesson的朋友必看PHP會(huì)話(Session)使用入門
- 比較全的PHP 會(huì)話(session 時(shí)間設(shè)定)使用入門代碼
- 簡(jiǎn)單PHP會(huì)話(session)說(shuō)明介紹
相關(guān)文章
升級(jí) PHP7.1 后 openssl 解密 mcrypt AES 數(shù)據(jù)不兼容問(wèn)題的處理方法
這篇文章主要介紹了升級(jí) PHP7.1 后 openssl 解密 mcrypt AES 數(shù)據(jù)不兼容問(wèn)題的處理方法,需要的朋友可以參考下2018-07-07destoon會(huì)員注冊(cè)提示“數(shù)據(jù)校驗(yàn)失?。?)”解決方法
這篇文章主要介紹了destoon會(huì)員注冊(cè)提示“數(shù)據(jù)校驗(yàn)失?。?)”解決方法,需要的朋友可以參考下2014-06-06php定義數(shù)組和使用示例(php數(shù)組的定義方法)
這篇文章主要介紹了php定義數(shù)組和使用示例(php數(shù)組的定義方法),需要的朋友可以參考下2014-03-03ThinkPHP框架實(shí)現(xiàn)的郵箱激活功能示例
這篇文章主要介紹了ThinkPHP框架實(shí)現(xiàn)的郵箱激活功能,結(jié)合實(shí)例形式分析了thinkPHP使用class.smtp.php及class.phpmailer.php類文件進(jìn)行郵件發(fā)送實(shí)現(xiàn)激活功能的具體操作技巧,需要的朋友可以參考下2018-06-06thinkphp3.2中實(shí)現(xiàn)phpexcel導(dǎo)出帶生成圖片示例
本篇文章主要介紹了thinkphp3.2中實(shí)現(xiàn)phpexcel導(dǎo)出帶生成圖片示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-02-02PHP 中 Orientation 屬性判斷上傳圖片是否需要旋轉(zhuǎn)
本文給大家介紹使用php技術(shù)實(shí)現(xiàn)根據(jù)上傳圖片orientation屬性判斷是否需要旋轉(zhuǎn),感興趣的朋友一起看看吧2015-10-10CodeIgniter刪除和設(shè)置Cookie的方法
這篇文章主要介紹了CodeIgniter刪除和設(shè)置Cookie的方法,涉及CodeIgniter操作cookie的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04