程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP4中的SESSION管理

PHP4中的SESSION管理

編輯:關於PHP編程

PHP4的新特性中最引人注目就是對SESSION的管理功能.當別人訪問你的站點時, 你可以把變量保存到SESSION對象中,從而實現許多新的功能.
什麼是SESSION
如果你還不太清楚,先我來解釋一下什麼是SESSION.一個SESSION在別人訪問你的網站是開始,在他離開網站是結束.當然你也可以在程序裡終止它.基本上,COOKIE與浏覽器聯系在一起的,一些服務器上的資源用來保存SESSION的變量.默認情況下,PHP4用文件來保存這些變量.當然,從理論上來講,也可以用數據庫或共享的內存來保存.
所有使用PHP4的SESSION特性的網頁都必須調用session_start()函數,讓PHP4引擎裝入與SESSION相關的信息 到內存中.session_start函數會嘗試從COOKIE或當前HTTP的請求的參數中尋找SESSION的ID.如果沒找到,就會建立一個新的SESSION對象.
什麼是SESSION變量
SESSION的變量其實就是一個普通的全局變量.當以SESSION變量的方式注冊(聲明)時,所有使用PHP4的SESSION功能的網頁都可以訪問它的值.要把一個變量注冊為SESSION變量,只要先給這個變量賦值,然後調用session_register("變量名").在後續的使用SESSION功能(通過session_start)的網頁中,"變量名"這個變量在無須重新注冊為SESSION變量,它就象一個普通的變量,而它的值就是前面賦給它的.在程序中改變這個變量的值,它會自動重新注冊和保存,且在它後續的網頁中可以正常使用.
那麼,它能做什麼呢?
問得好!有很多辦法可以使用SESSION管理和SESSION變量.這裡,我舉一個例子來說明.假如你正在建立一個虛擬社區的站點,你可能要跟蹤當前經過論證的用戶名以及他有多少新的消息等信息.為了降低數據庫的負載,你要用其他辦法來保存這些信息.有兩種辦法:
使用三個COOKIE
authenticatied_user - 當前經過論證的用戶名
num_message - 他有多少新的消息
expire_time - COOKIE的過期時限
使用SESSION,注冊三個SESSION變量
第一個方法有很大的安全隱患,別人可以偽造COOKIE,然後用另一個帳號去訪問系統.再說,所有的信息都通過HEADER()函數實現,比較麻煩.另外,當用戶的浏覽器拒絕接受其中的一個COOKIE是,整個數據就不完整了.
用SESSION,只要一個COOKIE,就能保存所有的信息.安全性也好一點.
不足之處
使用任何服務器端的腳本語言,SESSION都可以提供一個非常自由,靈活和強大的功能.但在PHP4中的SESSION有一些限制: -不能把對象(Objects)本身保存在SESSION裡 -保存在SESSION裡的數據的效率不是很高,因為PHP4用文件來保存SESSION的信息.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved