成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

PHP腳本的10個(gè)技巧(2)

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