精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● PHP>>Session 使用>>我来灌水啦!!Session的用法!!

主题:我来灌水啦!!Session的用法!!
发信人: chujian1()
整理人: sltongyong(2000-10-16 22:43:08), 站内信件
Session 一直是 PHP 擁護者心中的遺憾,在 PHP 還沒支援 Session 之前,各方
的 PHP Session 解決方案一直出現。直到 PHP4 終於將 Session 納入它的標準
功能。從此 PHP 在 Session 上終於可以抬得起頭了。

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

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

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

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

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

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

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


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


範例中的 Session 存在 /tmp/sess_33e401e2bf67a2f73b64d48b2aae6c4d,其內
容類似:

abc|s:7:"ABCDEFG";zzz|s:7:"zzzzzzz";  


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

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

實際的使用時,請注意變數的名稱,不要和別的變數沖到,那就很難找出問題的
原因。而變數可以有很多個,反正都是記在 /tmp/sess_xxxxxxxxxx... 之中,不
過不要太濫用 Session 而讓程式變得過於複雜,日後就很難維護了。

Session 的函式當然不只上述的二個,其它有關 Session 的函式,可以參考筆者
的書 PHP BIBLE 中有關 Session 的章節。 



----------------------------------------------------------------------
----------

--
OICQ:126326
虚拟社区:http://chujian.3322.net

※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: ]

[关闭][返回]