PHP session 會話處理函數
來源:易賢網 閱讀:866 次 日期:2016-08-17 16:04:27
溫馨提示:易賢網小編為您整理了“PHP session 會話處理函數”,方便廣大網友查閱!

這篇文章主要介紹了PHP session 會話處理函數的相關資料,需要的朋友可以參考下

PHP Session 變量

當運行一個應用程序時,你會打開它,做些更改,然后關閉它。這很像一次會話。計算機清楚你是誰。它知道你何時啟動應用程序,并在何時終止。但是在因特網上,存在一個問題:服務器不知道你是誰以及你做什么,這是由于 HTTP 地址不能維持狀態。

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

Session 的工作機制是:為每個訪問者創建一個唯一的 id (UID),并基于這個 UID 來存儲變量。UID 存儲在 cookie 中,亦或通過 URL 進行傳導。

1. 開始會話

在把信息儲存到session之前,首先要開啟會話。php提供了session_start()函數來開始或者繼續一個會話。定義:

1 bool session_start( void ) 

調用如下:

<?php session_start();?>

 <html>

 <body></body>

 </html>

注意:

(1)session_start()函數必須位于<html>標簽之前,也就是該函數必須在任何輸出前調用,常常在寫程序時不注意就多輸入了一個空格或者回車,這時就會報錯。應特別注意這一點。(我可是被坑過)

(2)無論有沒有成功創建會話,session_start()函數都會返回TRUE,因此使用任何異常處理都不起作用。

(3)還可以啟用配置指令session.auto_start,從而不必執行這個函數,但是這樣的話,每個php頁面執行時都會開始或者繼續一個會話。

2.存儲或者讀取會話

存儲和讀取session變量的正確方法是使用php的 S ESSION變量。 SESSION變量。_SESSION是php提供的全局參數,專門用來存儲和讀取session。(注意關聯數組的鍵名和普通變量的命名規則一致)

存儲會話時,可以對其直接賦值。

$_SESSION[‘season'] = '秋天'; 

以上設置了一個鍵名為“season”的會話元素,其值為“秋天”。當讀取時,就像調用普通數組元素一樣。

下面的兩段代碼顯示怎么存儲并讀取一個會話元素。

這是session1.php文件:

<?php

/**

 * Created by PhpStorm.

 * User: yuxiu

 * Date: //

 * Time: :

 */

if(isset($_POST['submit'])){

  session_start();                //開始建立一個會話

  $_SESSION['season'] = $_POST['season'];    //存儲會話數據

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

}

?>

<b>存儲會話</b>

<hr/>

選擇需要設置的數據:

<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();  //建立或者繼續一個會話

$season = $_SESSION['season'];    //讀取會話數據

echo "<b>讀取會話</b><br/><br/>";

switch ($season) {

  case '春天';

    echo '現在是綠意盎然的春天!';

    break;

  case '夏天';

    echo '現在是熱情四溢的夏天!';

    break;

  case '秋天';

    echo '現在是豐收果實的秋天!';

    break;

  case '冬天';

    echo '現在是白雪皚皚的冬天!';

    break;

  default ;

    echo '對不起,會話中沒有數據 或者 不存在該對話 !';

}

?>

在session1.php中首先使用session_start()創建一個會話,然后對提交的季節數據使用數組賦值的方式存儲,最后使用header()函數直接跳轉到開始。在session2.php文件中,也同樣需要session_start()函數繼續一個會話并利用session數組調用會話信息。

3.銷毀會話

當會話不再被使用的時候,就需要人為的銷毀它,雖然php有自動銷毀會話的功能,但這樣會使程序的效率變低??梢允褂胾nset()函數或者session_destroy()函數。

<?php

 unset($_SESSION['season']);

?>

或者:

<?php

 session_destroy();   //注意,使用這個函數將重置session數組,即失去所有的已經儲存的session數據

?>

更多信息請查看網絡編程
易賢網手機網站地址:PHP session 會話處理函數
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026國考·省考課程試聽報名

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
未满十八18勿进黄网站免费看