PHP 4.0有一個一直為人所期待的特性,這就是PHP的會話(session)支持。相比之下,PHP 3.0的用戶則不得不使用第三方的程序庫或完全不能具備這項功能。缺乏會話支持能力是PHP最大的缺陷之一,也是它最受人指摘的地方。不過,隨著會話支持從早期測試版本的PHP 4.0開始就成為后者的一部分,這個障礙也蕩然無存了。 有了會話支持,你就可以在用戶訪問網(wǎng)絡站點期間維持用戶特定的變量而無須象現(xiàn)在這樣:設置多個cookie、使用隱蔽表單域或在你可能經(jīng)常要連結的一個數(shù)據(jù)庫內存儲信息等。 在一個頁面上啟動會話就是告訴PHP引擎:你或是要開始一個會話(如果先前沒有)或是繼續(xù)目前的會話: session_start(); 啟動一個會話將通過cookie向用戶發(fā)送一個標識字符串(比如940f8b05a40d5119c030c9c7745aead9);在服務器端則會創(chuàng)建一個與此相匹配的臨時文件,在以上例子中,其名稱則是這個樣子:sess_940f8b05a40d5119c030c9c7745aead9。該文件包含了注冊的會話變量及其賦值。 用戶訪問計數(shù)器可謂使用會話的最常見實例: 啟動你的PHP模塊,保證PHP代碼是文件的第一行:沒有空白、沒有HTML輸出等等。這是因為,當會話函數(shù)發(fā)出一個文件頭的時候,如果你在session_start()函數(shù)之前發(fā)送了空白或者HTML代碼,系統(tǒng)即會報錯。 <? // if a session does not yet exist for this user, start one session_start(); 接下來,注冊一個名為count的變量。 session_register('count'); 注冊變量就等于告訴了PHP:只要會話存在,一個名叫count的變量也就同時存在。目前這個變量還沒有賦值。不過,如果你對它進行加1運算的話,該值即可被賦值為1: $count++; 把以上各行代碼一起考慮,實際上你已經(jīng)啟動了一個會話(如果先前沒有)、為某個用戶分配了會話id、注冊了名為count的變量并把$count加1以表示用戶首次訪問頁面: 要顯示用戶在當前會話下訪問頁面的次數(shù),你只要打印出$count的值即可: echo "<P>You've been here $count times.</p>"; 整個訪問計數(shù)器代碼如下所示: