程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP的會話處理函數session,會話函數session

PHP的會話處理函數session,會話函數session

編輯:關於PHP編程

PHP的會話處理函數session,會話函數session


PHP Session 變量

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

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

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

1. 開始會話

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

 1 bool session_start( void ) 

調用如下:

1 <?php session_start();?>
2 <html>
3 <body></body>
4 </html>

 

注意:

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

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

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

2.存儲或者讀取會話

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

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

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

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

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

這是session1.php文件:

 1 <?php
 2 /**
 3  * Created by PhpStorm.
 4  * User: yuxiu
 5  * Date: 2016/5/26
 6  * Time: 14:11
 7  */
 8 if(isset($_POST['submit'])){
 9     session_start();                                //開始建立一個會話
10     $_SESSION['season'] = $_POST['season'];       //存儲會話數據
11     header("Location: session2.php");            //應特別注意header()裡的格式問題
12 
13 
14 }
15 ?>
16 <b>存儲會話</b>
17 <hr/>
18 選擇需要設置的數據:
19 <form name="form1" method="post" action="" id="form1" >
20     <select name="season" id="season_select" >
21         <option value="春天">春天</option>
22         <option value="夏天">夏天</option>
23         <option value="秋天">秋天</option>
24         <option value="冬天">冬天</option>
25     </select>
26     <br/>
27     <br/>
28     <br/>
29    <input type="submit" name="submit" value="submit"/>
30 </form>

 這是session2.php文件:

 1 <?php
 2 /**
 3  * Created by PhpStorm.
 4  * User: yuxiu
 5  * Date: 2016/5/26
 6  * Time: 14:13
 7  */
 8 session_start();    //建立或者繼續一個會話
 9 $season = $_SESSION['season'];       //讀取會話數據
10 
11 echo "<b>讀取會話</b><br/><br/>";
12 switch ($season) {
13     case '春天';
14         echo '現在是綠意盎然的春天!';
15         break;
16     case '夏天';
17         echo '現在是熱情四溢的夏天!';
18         break;
19     case '秋天';
20         echo '現在是豐收果實的秋天!';
21         break;
22     case '冬天';
23         echo '現在是白雪皚皚的冬天!';
24         break;
25     default ;
26         echo '對不起,會話中沒有數據  或者  不存在該對話 !';
27 }
28 ?>

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

3.銷毀會話

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

<?php
 unset($_SESSION['season']);
?>

 

  或者:

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

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved