文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>php的Session的用法!!

php的Session的用法!!

时间:2007-02-17  来源:PHP爱好者

Session 一直是 PHP 擁護者心中的遺憾,在 PHP 還沒支援 Session 之前,各方
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
的 PHP Session 解決方案一直出現。直到 PHP4 終於將 Session 納入它的標準
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
功能。從此 PHP 在 Session 上終於可以抬得起頭了。
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9

China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
Session 中文實在是很難形容,一般都譯成時域。其實是在瀏覽某個網站時,在
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
瀏覽器沒有關閉的情形之下,都保持在同一個 Session 下。因此,利用 Sessio
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
n 的特性,可以計算使用者從進站到現在所瀏覽的頁數,也可以在伺服器端記載
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
使用一些資訊,避免這些資訊傳到使用者端。
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9

China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
說得更白話一些,例如電子商務網站中 B to C 的網站 (商家對客戶),常會有手
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
推車的功能 (Cart)。此時,將手推車的資訊留在伺服器端,不但可以記錄使用者
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
採買的資料,也不會讓這些相關資訊在網路上被截收,甚至以假亂真。
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9

China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
PHP4 產生的 Session 數字,是利用 Hash 雜湊所產生的 32 位元組的文字或數
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
字。因為產生時,時間也是它的種子,因此這個 Session 數字在該網站具有獨一
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
無二的特性。
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9

China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
欲使用 Session 的功能,首先要準備 PHP4 的版本,若使用 PHP3 及之前的版本
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
,只好在網路上找其它的解決方案了。由於 Session 牽涉到值的傳遞,因此,在
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
編譯 PHP4 時,在加上 --enable-trans-sid 的參數,也就是允許 SessionID 的
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
參數在不同的網頁之中傳遞。
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9

China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
PHP4 在咦鲿r,不會主動產生 Session 的值,除非呼叫了 Session 的函式: s
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
ession_start()。告訴 Web 伺服器後端,也就是 PHP4 的程式,啟動 Session
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
的功能。此時,PHP4 即產生唯一的 Session 代碼,並依在 php.ini 中所設定
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
session.save_path 的值 (內定為 /tmp),將這個代碼寫入檔案中,檔案的名稱
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
類似 sess_a5aa4678de539d45cf5e2e3309751f6a。
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9

China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
由於此時 Session 已經啟動了,因此可以將變數寫到 Session 中,讓這些變數
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
可以在不同的 Homepage 中傳遞。Session 函式 session_register() 就是負責
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
這樣的工作。例如下例 1.php 的 $abc 參數可以讓 2.php 直接使用:
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9

China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
<?php
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
// 檔名 1.php
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
session_start();
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
$abc="ABCDEFG";
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
$zzz="zzzzzzz";
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
session_register("abc");
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
session_register("zzz");
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
echo   "1.php";
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
?> 
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9

China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9

China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
<?php
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
// 檔名 2.php
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
session_start();
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
echo "2.phpn";
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
if   (isset($abc)) {
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
echo   $abc;
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
echo   $zzz;
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
}   else   {
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
echo   "變數沒傳進來";
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
}
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
?> 
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9

China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9

China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
範例中的 Session 存在 /tmp/sess_33e401e2bf67a2f73b64d48b2aae6c4d,其內
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
容類似:
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9

China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
abc|s:7:"ABCDEFG";zzz|s:7:"zzzzzzz"; 
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9

China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9

China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
可以看到,向 Session 註冊的變數,以 ; 分開。而變數的名稱及變數值,都記
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
錄在其中。有了 Session 之後,網頁不再是各自獨立的程式,而是整個網站就像
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
一套整合的應用程式。
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9

China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
Session 對網站間的數值傳遞而言是很方便,不過它和瀏覽器的 Cookie 有關,
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
若使用者將 Cookie 關掉,就會法預期它的結果了。
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9

China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
實際的使用時,請注意變數的名稱,不要和別的變數沖到,那就很難找出問題的
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
原因。而變數可以有很多個,反正都是記在 /tmp/sess_xxxxxxxxxx... 之中,不
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
過不要太濫用 Session 而讓程式變得過於複雜,日後就很難維護了。
China It Power . ComjIH1afhSXN37Vp0fwdSwYmIm9
php爱好者站 http://www.phpfans.net 为phper提供一切资讯.
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载