PHP腳本的10個(gè)技巧(2)_php基礎(chǔ)
May 17, 2016 am 09:07 AM會(huì)話用法
PHP 4.0有一個(gè)一直為人所期待的特性,這就是PHP的會(huì)話(session)支持。相比之下,PHP 3.0的用戶則不得不使用第三方的程序庫(kù)或完全不能具備這項(xiàng)功能。缺乏會(huì)話支持能力是PHP最大的缺陷之一,也是它最受人指摘的地方。不過(guò),隨著會(huì)話支持從早期測(cè)試版本的PHP 4.0開(kāi)始就成為后者的一部分,這個(gè)障礙也蕩然無(wú)存了。
有了會(huì)話支持,你就可以在用戶訪問(wèn)網(wǎng)絡(luò)站點(diǎn)期間維持用戶特定的變量而無(wú)須象現(xiàn)在這樣:設(shè)置多個(gè)cookie、使用隱蔽表單域或在你可能經(jīng)常要連結(jié)的一個(gè)數(shù)據(jù)庫(kù)內(nèi)存儲(chǔ)信息等。
在一個(gè)頁(yè)面上啟動(dòng)會(huì)話就是告訴PHP引擎:你或是要開(kāi)始一個(gè)會(huì)話(如果先前沒(méi)有)或是繼續(xù)目前的會(huì)話:
session_start();
啟動(dòng)一個(gè)會(huì)話將通過(guò)cookie向用戶發(fā)送一個(gè)標(biāo)識(shí)字符串(比如940f8b05a40d5119c030c9c7745aead9);在服務(wù)器端則會(huì)創(chuàng)建一個(gè)與此相匹配的臨時(shí)文件,在以上例子中,其名稱則是這個(gè)樣子:sess_940f8b05a40d5119c030c9c7745aead9。該文件包含了注冊(cè)的會(huì)話變量及其賦值。
用戶訪問(wèn)計(jì)數(shù)器可謂使用會(huì)話的最常見(jiàn)實(shí)例:
啟動(dòng)你的PHP模塊,保證PHP代碼是文件的第一行:沒(méi)有空白、沒(méi)有HTML輸出等等。這是因?yàn)?,?dāng)會(huì)話函數(shù)發(fā)出一個(gè)文件頭的時(shí)候,如果你在session_start()函數(shù)之前發(fā)送了空白或者HTML代碼,系統(tǒng)即會(huì)報(bào)錯(cuò)。
// if a session does not yet exist for this user, start one
session_start();
接下來(lái),注冊(cè)一個(gè)名為count的變量。
session_register('count');
注冊(cè)變量就等于告訴了PHP:只要會(huì)話存在,一個(gè)名叫count的變量也就同時(shí)存在。目前這個(gè)變量還沒(méi)有賦值。不過(guò),如果你對(duì)它進(jìn)行加1運(yùn)算的話,該值即可被賦值為1:
$count++;
把以上各行代碼一起考慮,實(shí)際上你已經(jīng)啟動(dòng)了一個(gè)會(huì)話(如果先前沒(méi)有)、為某個(gè)用戶分配了會(huì)話id、注冊(cè)了名為count的變量并把$count加1以表示用戶首次訪問(wèn)頁(yè)面:
要顯示用戶在當(dāng)前會(huì)話下訪問(wèn)頁(yè)面的次數(shù),你只要打印出$count的值即可:
echo "
You've been here $count times.
";整個(gè)訪問(wèn)計(jì)數(shù)器代碼如下所示:
session_start();
session_register('count');
$count++;
echo "
You've been here $count times.
";?>
如果你重載以上腳本,你可以觀察到計(jì)數(shù)值增加了。有意思吧?
你還可以在會(huì)話中注冊(cè)數(shù)組。假設(shè)你有一個(gè)名為$faves的數(shù)組:
$faves = array ('chocolate','coffee','beer','linux');
你可以象其他單個(gè)變量一樣注冊(cè)該數(shù)組:
session_register('faves');
索引數(shù)組和索引其他單變量沒(méi)有什么差別,比如$faves這樣。如果你的用戶想在Web站點(diǎn)的一個(gè)頁(yè)面上展示自己的愛(ài)好,那么你完全可以把他喜歡的東西注冊(cè)為一個(gè)名為$faves會(huì)話變量,然后你可以在其他頁(yè)面上把這些值打印出來(lái):
session_start();
echo "My user likes:
- ";
- $v"; }
echo "
while (list(,$v) = each ($faves)) {
echo "
?>
這就是你要得到的:用戶愛(ài)好的漂亮列表。
會(huì)話變量不能被查詢字符串所覆蓋,這就是說(shuō),你不能鍵入http:///www.yourdomain.com/yourscript.php?count=56 這樣的指令為注冊(cè)會(huì)話變量$count分配新值。這一點(diǎn)對(duì)安全而言是非常重要的:你只能在服務(wù)器端腳本上修改或者刪除(未注冊(cè)的)會(huì)話變量。
如果你想完全刪除某個(gè)會(huì)話變量,你可以從系統(tǒng)中取消注冊(cè)該變量:
session_unregister('count');
徹底刪除某個(gè)會(huì)話,比如按下Logout按鈕就是這樣的例子,那么你可以寫下如下的代碼:
session_destroy();
使用會(huì)話來(lái)存儲(chǔ)變量值可以讓我們免于編寫數(shù)據(jù)庫(kù)處理代碼的痛苦,這樣也就不會(huì)過(guò)度增加對(duì)系統(tǒng)的負(fù)載,同時(shí)也減少了對(duì)專有數(shù)據(jù)庫(kù)語(yǔ)法的使用范圍,再說(shuō),你也不再非得向訪問(wèn)站點(diǎn)的用戶發(fā)送一大堆cookie了。而現(xiàn)在呢——只需要一個(gè)cookie、一個(gè)變量就全部搞定了,真是一滴水就映出了全部光輝!實(shí)在是不能比這更簡(jiǎn)單的了。

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)