首頁 > 後端開發 > php教程 > PHP session 會話處理函數實例詳解

PHP session 會話處理函數實例詳解

墨辰丷
發布: 2023-03-29 10:50:02
原創
1360 人瀏覽過

這篇文章主要介紹了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()函數必須位於標籤之前,也就是函數必須在任何輸出前調用,常常在寫程式時不注意就多輸入了一個空格或回車,這時就會報錯。應特別注意這一點。 (我可是被坑過)


(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[&#39;submit&#39;])){
   session_start();                //开始建立一个会话
   $_SESSION[&#39;season&#39;] = $_POST[&#39;season&#39;];    //存储会话数据
   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[&#39;season&#39;];    //读取会话数据
 echo "<b>读取会话</b><br/><br/>";
 switch ($season) {
   case &#39;春天&#39;;
     echo &#39;现在是绿意盎然的春天!&#39;;
     break;
   case &#39;夏天&#39;;
     echo &#39;现在是热情四溢的夏天!&#39;;
     break;
   case &#39;秋天&#39;;
     echo &#39;现在是丰收果实的秋天!&#39;;
     break;
   case &#39;冬天&#39;;
     echo &#39;现在是白雪皑皑的冬天!&#39;;
     break;
   default ;
     echo &#39;对不起,会话中没有数据 或者 不存在该对话 !&#39;;
 }
 ?>
登入後複製


在session1.php中首先使用session_start()創建一個會話,然後對提交的季節資料使用數組賦值的方式存儲,最後使用header()函數直接跳轉到開始。在session2.php檔案中,也同樣需要session_start()函數繼續一個會話並利用session陣列呼叫會話資訊。

3.銷毀會話

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


#  或:


總結:以上就是本篇的全部內容,希望能對大家的學習有所幫助。
相關推薦:

PHP實現隨機輸出國內IP的函數

######php#### ajax實現註冊即時驗證功能的方法###############PHP Ajax實作驗證碼的即時驗證功能################### #######

以上是PHP session 會話處理函數實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板