PHP session 會話處理函數執行個體詳解

來源:互聯網
上載者:User
這篇文章主要介紹了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有自動銷毀會話的功能,但這樣會使程式的效率變低。可以使用unset()函數或者session_destroy()函數。

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

或者:

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

總結:以上就是本篇文的全部內容,希望能對大家的學習有所協助。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.