萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> session 教程二

session 教程二

關於PHPlib中的其它功能以及有關session的其它函數的使用,你可以參看它帶的手冊,或上它的網站看在線文檔。它的老家在http://phplib.netuse.de/index.PHP3 。php4的session實現大都從phplib學來的,它也靠cookies保存session id,用文件系統保存變量(默認情況下)。因此,它的session變量不能保存對象(事實上能保存對象內容,但沒有意義,因為它是保存在磁盤上的,不是活的對象,充其量也就是對象屍體。)不過這點的限制不是太大,我們在大部分情況下都只需要保存變量就行了。當然你也可以將session保存在數據庫中,下一小節中我們會講到怎樣將session保存在數據庫中。在php4中由於比php3多了session支持,所以在PHP.ini文件中也多了session配置選項。下面我們來看看各項的作用與意義:

[session]
session.save_handler = files ; handler used to store/retrieve data(用什麼保存session變量,默認情況下用文件)
session.save_path = c:/temp ; argument passed to save_handler(保存session變量的目錄,在linux/unix下為/tmp,在win下設為你的目錄)
; in the case of files, this is the
; path where data files are stored
session.use_cookies = 1 ; whether to use cookies(是否使用cookies,當然,在win下別無選擇)
session.name = PHPSESSID
; name of the session(默認session使用的cookies名,建議不要改動)
; is used as cookie name
session.auto_start = 0 ; initialize session on request startup(是否自動啟用session,當為1時,在每頁中就可以不必調用session_start()函數了)
session.cookie_lifetime = 0 ; lifetime in seconds of cookie(設定 cookie 送到浏覽器後的保存時間,單位為秒。缺省值為 0,表示直到浏覽器關閉。)
; or if 0, until browser is restarted
session.cookie_path = / ; the path the cookie is valid for(cookie)(cookies有效路徑)
session.cookie_domain = ; the domain the cookie is valid for(cookies有效域名)
session.serialize_handler = php ; handler used to serialize data(定義序列化數據的標識,本功能只有 WDDX 模塊或 PHP 內部使用。缺省值為 PHP)
; php is the standard serializer of PHP
session.gc_probability = 1 ; percentual probability that the (設定每次臨時文件開始處理 (gc, garbage collection) 處理概率。缺省值為 1。 )
; 'garbage collection' process is started
; on every session initialization
session.gc_maxlifetime = 1440 ; after this number of seconds, stored(設定保存session的臨時文件被清除前的存活秒數)
; data will be seen as 'garbage' and
; cleaned up by the gc process
session.referer_check = ; check HTTP Referer to invalidate (決定參照到客戶端的session 代碼是否要刪除。有時在安全或其它考慮時,會設定不刪除。缺省值為 0。)
; externally stored URLs containing ids
session.entropy_length = 0 ; how many bytes to read from the file(設定 session 從高熵值資源讀取的位數。缺省值為 0.)
session.entropy_file = ; specified here to create the session id(設定 session 代碼建立時,使用外部高熵值資源或文件來建立,例如 UNIX 系統上的 /dev/random 或 /dev/urandom。 )
; session.entropy_length = 16
; session.entropy_file = /dev/urandom
session.cache_limiter = nocache ; set to { nocache,private,public } to (設定session緩沖限制)
; determine HTTP caching aspects
session.cache_expire = 180 ; document expires after n minutes(文檔有效期,單位為分鐘)

在windows平台下,php4.01pl2以前的版本會出現設置session.save_path 後出錯的情況,這是php的一個bug,在php4.01pl2及以後已經修正了。如果你用以前的版本,你可以將session.save_path設為"./",或設為"/temp",並在你放置php腳本的當前盤根目錄下建一個名為temp的目錄即可(我的PHP腳本放在d:apachehtdocs下,則我在d:盤根目錄下建一名為temp的目錄)。
在PHP4中有關session的函數主要有以下這些:

session_start: 初始化session,需要用session的每一個頁面最開始處調用。
session_destroy: 結束 session,在需要結束session處調。
session_name: 存取目前 session 名稱。
session_module_name: 存取目前 session 模塊。
session_save_path: 存取目前 session 路徑。
session_id: 存取目前 session id號。
session_register: 注冊新的session變量。
session_unregister: 刪除已注冊session變量。
session_is_registered: 檢查session變量是否注冊。
session_decode: session 數據解碼。
session_encode: session 數據加密。

通常情況下我們只需要調用三個函數即可。
即sesssion_start()、session_register()、session_is_registered()。
在需要用到session的每一頁的最開始處調用session_start()函數,
一個典型的使用session的頁面如下:
<?session_start()?>
<html>
....
<body>
<?
$var="hello";
session_register("var");//注冊$var變量,注意沒有$符號


if(session_is_registered("var"))//檢查變量是否注冊
echo "haha,注冊了!";
else
echo "sorry,還沒有注冊!";

?>
</body>
</html>

 

copyright © 萬盛學電腦網 all rights reserved