PHP session 會(huì)話處理函數(shù)
來(lái)源:易賢網(wǎng) 閱讀:650 次 日期:2016-08-17 16:04:27
溫馨提示:易賢網(wǎng)小編為您整理了“PHP session 會(huì)話處理函數(shù)”,方便廣大網(wǎng)友查閱!

這篇文章主要介紹了PHP session 會(huì)話處理函數(shù)的相關(guān)資料,需要的朋友可以參考下

PHP Session 變量

當(dāng)運(yùn)行一個(gè)應(yīng)用程序時(shí),你會(huì)打開它,做些更改,然后關(guān)閉它。這很像一次會(huì)話。計(jì)算機(jī)清楚你是誰(shuí)。它知道你何時(shí)啟動(dòng)應(yīng)用程序,并在何時(shí)終止。但是在因特網(wǎng)上,存在一個(gè)問題:服務(wù)器不知道你是誰(shuí)以及你做什么,這是由于 HTTP 地址不能維持狀態(tài)。

通過在服務(wù)器上存儲(chǔ)用戶信息以便隨后使用,PHP session 解決了這個(gè)問題(比如用戶名稱、購(gòu)買商品等)。不過,會(huì)話信息是臨時(shí)的,在用戶離開網(wǎng)站后將被刪除。如果需要永久儲(chǔ)存信息,可以把數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中。

Session 的工作機(jī)制是:為每個(gè)訪問者創(chuàng)建一個(gè)唯一的 id (UID),并基于這個(gè) UID 來(lái)存儲(chǔ)變量。UID 存儲(chǔ)在 cookie 中,亦或通過 URL 進(jìn)行傳導(dǎo)。

1. 開始會(huì)話

在把信息儲(chǔ)存到session之前,首先要開啟會(huì)話。php提供了session_start()函數(shù)來(lá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)。(我可是被坑過)

(2)無(wú)論有沒有成功創(chuàng)建會(huì)話,session_start()函數(shù)都會(huì)返回TRUE,因此使用任何異常處理都不起作用。

(3)還可以啟用配置指令session.auto_start,從而不必執(zhí)行這個(gè)函數(shù),但是這樣的話,每個(gè)php頁(yè)面執(zhí)行時(shí)都會(huì)開始或者繼續(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();                //開始建立一個(gè)會(huì)話

  $_SESSION['season'] = $_POST['season'];    //存儲(chǔ)會(huì)話數(shù)據(jù)

  header("Location: session.php");      //應(yīng)特別注意header()里的格式問題

}

?>

<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ì)話中沒有數(shù)據(jù) 或者 不存在該對(duì)話 !';

}

?>

在session1.php中首先使用session_start()創(chuàng)建一個(gè)會(huì)話,然后對(duì)提交的季節(jié)數(shù)據(jù)使用數(shù)組賦值的方式存儲(chǔ),最后使用header()函數(shù)直接跳轉(zhuǎn)到開始。在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ù)

?>

更多信息請(qǐng)查看網(wǎng)絡(luò)編程
易賢網(wǎng)手機(jī)網(wǎng)站地址:PHP session 會(huì)話處理函數(shù)
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 加入群交流 | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65317125(9:00—18:00) 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
咨詢QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)