當前位置:才華齋>計算機>php語言>

PHP中session使用方法詳解

php語言 閱讀(2.17W)

Session指的就是使用者在瀏覽某個網站時,從進入網站到瀏覽器關閉所經過的這段時間,也就是使用者瀏覽這個網站所花費的時間。從上述的定義中我們可以看到,Session實際上是一個特定的時間概念。跟隨小編去看看吧!

PHP中session使用方法詳解

一般來說,在網站上某一個頁面中的變數(指服務器端變數,下同)是不能在下一頁中用的,有了session就好辦了。session中註冊的變數可以作為全域性變數使用。這樣我們就可以將session用於使用者身份認證,程式狀態記錄,頁面之間引數傳遞。

在PHP3版本中是如何實現session的'?

php3本身是沒有實現session功能的,我們只有用其他的方法來實現,這其中最有名的要算phplib了。phplib最基本的功能包括使用者認證、Session管理、許可權及資料庫的抽象化。下面我們就講述一下如何用phplib實現session。

  1、首先安裝phplib(環境為win2000+php3.0.16+Apache1.3.12+phplib7.2c+mysql3.23.21 for win32)

首先將phplib解開,裡面有一個"php"目錄,將這個目錄拷貝到Apache的安裝目錄下。例如:Apache安裝在d:Apache 目錄下,那麼就將"php"目錄拷貝到d:Apache,並將phplib目錄的pages目錄下(不包括目錄本身)的檔案和目錄一起拷貝到d:Apachehtdocs下。

phplib的類庫需要根據系統進行初始化,可能需要修改檔案,其中包含著一些基本引數,可以根據自己機器的實際情況來進行修改。

將d:Apachephp檔案中的一段程式改為如下樣子:

if (!isset($_PHPLIB) or !is_array($_PHPLIB)) {

$_PHPLIB["libdir"] = "d:/Apache/php/"; //放phplib下php目錄的路徑

}

修改d:Apachephp檔案:

class DB_Example extends DB_Sql {

var $Host = "localhost"; //mysql資料庫所在主機名

var $Database = "test"; //資料庫名

var $User = "root"; //資料庫使用者名稱

var $Password = "1234567"; //資料庫使用者密碼

}

最後根據phplib目錄下的stuff子目錄中的create_l檔案生成初始表。

由於每一個使用phplib的頁面首先必須可以找到執行phplib所必需的類庫檔案,我們可以在中設定auto_prepend變數來支援,phplib中包含一個檔案,並將auto_prepend指定為"d:/Apache/php/"(帶引號)後,各頁面就會自動包含phplib類庫,我們還可以將phplib類庫所在目錄加進include變數中,以便可以找到這些檔案。

  2、呼叫page_open()函式

在每一個使用phplib的頁面中,必須首先呼叫page_open函式進行初始化,例如:

<?php

page_open(array("sess" => "Test_Session"));

?>

陣列變數(sess)用來初始化一些狀態儲存物件,這裡應該注意:必須使用phplib內建名(sess),這些內建名是在中所定義的.。

因為phplib使用了Cookies來儲存狀態資訊,所以page_open()函式必須在頁面內容輸出到瀏覽器之前被呼叫。php指令碼最後應以page_close()結束,這將會將有關狀態資料寫回到資料庫中,否則變數會丟失。

  3、具體使用。

註冊一個變數後即可在隨後的頁面中使用它,直至session結束。方法:

<?php $sess->register( "varname"); ?>

注意,這裡的varname不是變數值,而是變數名,可以先指定變數名,隨後再賦值。你在某個頁面中可以改變變數的值,隨後的頁面訪問該變數時會得到改變後的值。變數的型別是多樣的,可以是一個字串,一個數字,一個數組。舉例來說明:

第一頁:

<?php

page_open(array("sess" => "Test _Session"));

$sess->register( "welcome"); //註冊變數$welcome,注意不需要加$

$welcome="Hello,PHP world!";

……

page_close();

?>

第二頁:

<?php

page_open();//開始session

echo $welcome;//顯示第一頁中定義的$welcome

page_close();//儲存狀態資訊

?>

註冊完一個變數,當頁面最後呼叫page_close()函式後,各個session變數會被寫回到資料庫中。如果忘記呼叫page_close()函式的話,變數就不會被寫回資料庫,這樣將出現不可預知的後果。當變數被使用完畢,不再需要用到時,可以呼叫以下函式將變數刪除:

<?php

page_open(array("sess" => "Test _Session"));

……

$sess->unregister( "variable_name");

……

page_close();

?>

在PHP4版本中是如何實現session的?

php4的session也靠cookies儲存session id,用檔案系統儲存變數(預設情況下),因此,它的session變數不能儲存物件。當然也可以將session儲存在資料庫中。

在php4中有關session的函式很多(詳見配置一文),通常情況下我們只需要呼叫三個函式即可:sesssion_start()、session_register()、session_is_registered()。

在需要用到session的每一頁的最開始處呼叫session_start()函式, 例如:

<?session_start()?>

<html><body>

<?

$welcome="hello world !";

session_register("welcome");//註冊$welcome變數,注意沒有$符號

if(session_is_registered("welcome"))//檢查$welcome變數是否註冊

echo "welcome變數已經註冊了!";