使用PHP應用session時,將session中的數據存儲在服務器上,然後通過客戶端傳來的sessionID識別客戶端的信息,並提取信息。
自己的一個實例
代碼如下 復制代碼<?php
session_start();//啟動會話session,在session必須啟動
$_SESSION['name']=”fangshan”;//設置session,name的值為fangshan
?>
<a href=”session2.php”>next</a>
(以上另存為session.php)
<?php
session_start();//啟動會話
if(isset($_SESSION['name']))//判斷是否存在
{
echo $_SESSION['name'];
echo “<a href=”deletesession.php”>del session</a>”;
}
else
{
echo “Session has not been setted”;
}
?>
(以上另存為session2.php)
<?php
session_start();//啟動session
unset($_SESSION['name']);//注銷session變量
session_destroy();//清除session ID
header(“Location:session2.php”);//跳轉回前面頁面
?>
(以上另存為deletesession.php)
session的常用操作:
session的寫入、讀取、注冊與刪除。
session的開始
標記session使用開始的函數是session_start,session_start函數用於初始化session變量。語法如下:
session_start();
返回值為TRUE。
session的寫入和讀取
在PHP中,session的使用是通過預定義數組$_SESSION的調用和讀取來完成。
在網站的頁面中,在注冊頁面對$_SESSION數組進行賦值,在其他的頁面中對$_SESSION數組進行讀取。
注冊頁面中的session,例如:
代碼如下 復制代碼 <?php其他頁面中的session,例如:
代碼如下 復制代碼 <?php依次運行,結果是:
php
session的檢測與注銷
還記得isset和unset函數嗎?這兩個函數分別實現session的檢測與注銷。
isst函數用於檢測session是否已經被存在,語法如下:
bool isset($_SESSION['session_name'])
例如:
代碼如下 復制代碼<?php
session_start();
if(isset($_SESSION['keyword']))
echo $_SESSION['keyword'];
else
echo "www.111cn.net";
?>
結果:
php
usset函數用於注銷已經建立的session變量。語法如下:
unset($_SESSION['session_name']))
例如:
代碼如下 復制代碼<?php
session_start();
unset($_SESSION['keyword']);
if(isset($_SESSION['keyword']))
echo $_SESSION['keyword'];
else
echo "www.111cn.net";
?>
結果:
www.111cn.net
Php處理會話的函數一共有10個,我們詳細介紹一下將要用到幾個函數。
1、 session_start
函數功能:開始一個會話或者返回已經存在的會話。
函數原型:boolean session_start(void);
返回值:布爾值
功能說明:這個函數沒有參數,且返回值均為true。最好將這個函數置於最先,而且在它之前不能有任何輸出,否則會報警,如:Warning: Cannot send session cache limiter - headers already sent (output started at /usr/local/apache/htdocs/cga/member/1.php:2) in /usr/local/apache/htdocs/cga/member/1.php on line 3
2、 session_register
函數功能:登記一個新的變量為會話變量
函數原型:boolean session_register(string name);
返回值:布爾值。
功能說明:這個函數是在全局變量中增加一個變量到當前的SESSION中,參數name就是想要加入的變量名,成功則返回邏輯值true。可以用$_SESSION[name]或$HTTP_SESSION_VARS[name]的形式來取值或賦值。
3、 session_is_registered
函數功能:檢查變量是否被登記為會話變量。
函數原型:boobean session_is_registered(string name);
返回值:布爾值
功能說明:這個函數可檢查當前的session之中是否已有指定的變量注冊,參數name就是要檢查的變量名。成功則返回邏輯值true。
4、 session_unregister
函數功能:刪除已注冊的變量。
函數原型:boolean session_session_unregister(string name);
返回值:布爾值
功能說明:這個函數在當前的session之中刪除全局變量中的變量。參數name就是欲刪除的變量名,成功則返回true.
5、 Session_destroy
函數功能:結束當前的會話,並清空會話中的所有資源。
函數原型:boolean session destroy(void);
返回值:布爾值。
功能說明:這個函數結束當前的session,此函數沒有參數,且返回值均為true
上面介紹函數下文將會用到,但還有一些有關session的函數也介紹一下:
6、 session_encode
函數功能:sesssion信息編碼
函數原型:string session_encode(void);
返回值:字符串
功能說明:返回的字符串中包含全局變量中各變量的名稱與值,形式如:a|s:12:"it is a test";c|s:4:"lala"; a是變量名 s:12代表變量a的值"it is a test的長度是12 變量間用分號”;”分隔。
7、 session_decode
函數功能:sesssion信息解碼
函數原型:boolean session_decode (string data)
返回值:布爾值
功能說明:這個函數可將session信息解碼,成功則返回邏輯值true
8、 session_name
函數功能:存取當前會話名稱
函數原型:boolean session_name(string [name]);
返回值:字符串
功能說明:這個函數可取得或重新設置當前session的名稱。若無參數name則表示獲取當前session名稱,加上參數則表示將session名稱設為參數name
9、 session_id
函數功能:存取當前會話標識號
函數原型:boolean session_id(string [id]);
返回值:字符串
功能說明:這個函數可取得或重新設置當前存放session的標識號。若無參數id則表示只獲取當前session的標識號,加上參數則表示將session的標識號設成新指定的id
10、 session_unset
函數功能:刪除所有已注冊的變量。
函數原型:void session_unset (void)
返回值:布爾值
功能說明:這個函數和Session_destroy不同,它不結束會話。就如同用函數session_unregister逐一注銷掉所有的會話變量。