使用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_start(); $_SESSION['keyword']= "php"; ?>
|
其他頁面中的session,例如:
| 代碼如下 |
複製代碼 |
<?php session_start(); echo $_SESSION['keyword']; ?>
|
依次運行,結果是:
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逐一登出掉所有的會話變數。