PHP使用者狀態(tài)管理功能的應用_PHP教程
Jul 21, 2016 pm 04:09 PM
使用者狀態(tài)管理(session support)是 PHP 4.0 一個讓大家期待已久的新功能。在 PHP 3.0 的時代,程序設計員必須使用其它人寫好的函式庫來實作狀態(tài)管理功能,或者就干脆放棄這項功能不用算了。而狀態(tài)管理功能的缺乏事實上是 PHP 3.0 最讓人感到失望的地方之一。不過現(xiàn)在狀況已經(jīng)得到改變,從 PHP 4.0 的早期測試版開始,使用者狀態(tài)管理便已經(jīng)成為 PHP 內建的功能之一了。
你可以使用狀態(tài)管理功能來管理使用者從進入網(wǎng)站開始一直到離開網(wǎng)站為止這段期間內的所有相關變量(只要使用者沒有離開網(wǎng)站,那么這些變量就都可以取用,不會因為使用者離開某個單一頁面而造成資料消失),而不需要儲存許多cookie 或者使用隱藏窗體字段,甚至將這些變量儲存在數(shù)據(jù)庫里面,造成數(shù)據(jù)庫服務器的大量負荷。
一旦你在網(wǎng)站中的某一頁激活狀態(tài)管理,PHP 引擎便會開始紀錄使用者狀態(tài)(如果對這個使用者來說系統(tǒng)還沒開始紀錄該訪問者的狀態(tài)的話),或者繼續(xù)紀錄某個先前已經(jīng)激活的使用者狀態(tài)。要激活 PHP 的狀態(tài)管理功能,你可以使用下面這個語法:
session_start();??
一旦激活狀態(tài)管理,PHP 會通過 cookie 傳送一個獨一無二的狀態(tài)代碼(這個代碼看起來會像是:940f8b05a40d5119c030c9c7745aead9)給使用者,同時在服務器這端,PHP 引擎會自動產(chǎn)生一個檔名與狀態(tài)代碼相對應的暫存文本文件(如:sess_940f8b05a40d5119c030c9c7745aead9),該檔案會用來儲存程序設計員在這個使用者狀態(tài)紀錄中所注冊的所有變量。
談到使用者狀態(tài)管理,最常使用的例子便是一個頁面存取計數(shù)器(access counter)了:現(xiàn)在我就開始教大家撰寫 PHP 程序代碼。
特別注意
在你嘗試激活使用者狀態(tài)紀錄之前,千萬不能夠輸出任何內容(不能有空格,TAB 甚至換行等等空格符,也不能有任何 HTML 卷標,任何內容都不行)給瀏覽器。這是因為狀態(tài)管理相關函數(shù)會送出 HTTP 表頭(header)信息給瀏覽器,如果在送出 HTTP 表頭信息給瀏覽器之前已經(jīng)有其它內容被輸出的話,系統(tǒng)將會出現(xiàn)錯誤訊息。
如果該使用者的狀態(tài)管理尚未被激活的話,下面這行程序便會激活該使用者的狀態(tài)管理:
session_start();??
接下來,注冊一個名為count的變量:
session_register('count');??
一旦你注冊了一個變量,PHP 便會在從使用者進入網(wǎng)站一直到離開網(wǎng)站的整個瀏覽過程中自動替你維護這個變量的值,你可以隨時取用這些注冊過的變量。剛注冊好的變量并沒有指定任何值給它,不過一旦我們增加 count 變量的值,它的值便會是 1 了:
$count++;??
把這些程序代碼組合起來,我們的程序代碼就會做下面這些事情了:激活使用者狀態(tài)紀錄功能(如果對該使用者而言尚未激活的話),指定一個獨一無二的狀態(tài)代碼(session id)給該使用者,注冊一個名為 count 的變量,并且在每次使用者瀏覽到該頁面的時候,將變量 $count 的值加一,這個值就可以用來記錄該使用者瀏覽過該頁面的次數(shù)了。
如果要將使用者這次的瀏覽歷程中觀看了該頁面多少次,我們只需要將變量$count 的值列印出來就行了:
echo "<P>您已經(jīng)瀏覽這個頁面$count 次了。</p>";??
完整的頁面瀏覽計數(shù)器程序代碼看起來就像這樣:
<?session_start();
session_register('count');
$count++;
echo "<P>您已經(jīng)瀏覽這個頁面 $count 次了。</p>";
?>
如果你不斷重新加載這個頁面,你會發(fā)現(xiàn)畫面上顯示的瀏覽次數(shù)會不斷的增加。除了注冊單純的變量以外,我們也可以注冊一個數(shù)組(array)到使用者狀態(tài)紀錄中。假設我們有下面這個名為 $faves 的數(shù)組:
$faves = array ('古典音樂','旅游','唱歌','Linux');??
注冊數(shù)組的做法和注冊其它單純變量是完全一樣的:
session_register('faves');??
注冊完成數(shù)組以后,在往后的程序代碼里面要參照到該數(shù)組的做法也沒有任何不同,只要單純地叫用 $faves 這個變量就行了。假設你的使用者在網(wǎng)站中某個頁面窗體里頭選擇了一些他所喜歡的東西,而且你將這些項目通過 $faves 數(shù)組注冊到該使用者的狀態(tài)紀錄里面,那么在網(wǎng)站中其它頁面你可以很容易地把這些項目顯示在畫面上:
<?
session_start();
echo "我的訪客喜歡的東西是:<ul>";
while (list($v) = each ($faves)) {
echo "<li>$v</li>"; }
echo "</ul>";
?>
就這么輕輕松松的,你就可以把訪客喜歡的東西顯示在網(wǎng)頁上了。
使用者狀態(tài)紀錄所注冊的變量是無法用查詢字符串(query string)來蓋過的,比方說,使用者無法直接在瀏覽器的地址列輸入下面的 URL:
http:///www.yourdomain.com/yourscript.php?count=56 來企圖蓋過原本注冊在使用者狀態(tài)紀錄中的 $count 變量的值。這是一個非常重要的安全觀念:只有你自己能夠在你的程序里面注冊或者刪除使用者狀態(tài)紀錄中的變量,其它使用者無法通過 URL 后面的查詢字符串企圖混淆這些變量的值。
要刪除原本注冊過的使用者狀態(tài)變量,你可以使用下面的語法:
session_unregister('count');??
要將整個使用者狀態(tài)紀錄變量全部刪除并且停止紀錄,請使用下面的語法:
session_destroy();??
結語:
適當?shù)厣朴檬褂谜郀顟B(tài)紀錄功能的好處多多:它可以讓我們不須將使用者狀態(tài)資料儲存在數(shù)據(jù)庫中,減少數(shù)據(jù)庫服務器的負荷。它也可以讓我們不需要自己撰寫長長的程序代碼來通過 cookie 紀錄這些使用者狀態(tài)變量(而且,這樣一來我們也不用在網(wǎng)站的隱私權聲明里頭花上很長的篇幅來解釋為什么當使用者登入網(wǎng)站的時候,我們要儲存五十個 cookie 到他們的硬盤里面去了)。這項功能讓我們只需要一個 cookie 來儲存一個變量(session id)就行了,其它所有的信息都通過一個精巧無比的機制來幫我們紀錄,讓我們的工作變得再簡單不過了!

? AI ??

Undress AI Tool
??? ???? ??

Undresser.AI Undress
???? ?? ??? ??? ?? AI ?? ?

AI Clothes Remover
???? ?? ???? ??? AI ?????.

Clothoff.io
AI ? ???

Video Face Swap
??? ??? AI ?? ?? ??? ???? ?? ???? ??? ?? ????!

?? ??

??? ??

???++7.3.1
???? ?? ?? ?? ???

SublimeText3 ??? ??
??? ??, ???? ?? ????.

???? 13.0.1 ???
??? PHP ?? ?? ??

???? CS6
??? ? ?? ??

SublimeText3 Mac ??
? ??? ?? ?? ?????(SublimeText3)

??? ?? ??? ??? ?? JavaScript? MediareCorder API? ?? PHP ???? ???? ?????. 2. PHP? ???? ?? ??? ???? STTAPI (? : Google ?? Baidu ?? ??)? ???? ???? ?????. 3. PHP? ???? AI ??? (? : OpenAigpt)? ????. 4. ?? ?? PHP? TTSAPI (? : Baidu ?? Google ?? ??)? ???? ??? ?? ??? ?????. 5. PHP? ?? ??? ??? ??? ??? ?? ?? ??? ?????. ?? ????? PHP? ?? ???? ?? ?? ?? ??? ??? ?????.

PHP?? ?? ?? ??? ???? ?? ??? ? ???? ?? ??? ???? ?? ??? ???? ???? ????. 1. ?? ?? ??? ?? ??? URL ? ?? ??? ????. 2. UrlenCode? ???? ?? ??? ???????. 3. ? ???? ????? ?? ?? ??? ? ?? ??? ?????. 4. ???? ???? ?? ? ? ??? ??? ??? ??? ?????. 5. ??? ?? ??? ????? ?? ????? OG ??? ???? ?????. 6. XSS ??? ???? ?? ??? ??? ?????. ? ???? ??? ??? ???? ??? ?? ?? ??? ??? ???? ??? ?? ??? ?????.

AI? ??? ??? ?? ?? ? ?? ???? ????? ?? ??? ??????. 1. Baidu, Tencent API ?? ?? ?? NLP ?????? ?? ??? AI ?? ?? API? ??????. 2. PHP? ? ?? guzzle? ?? API? ???? ?? ??? ??????. 3. ?? ????? ?? ?? ??? ???? ???? ???? ??? ??? ? ????. 4. ?? ?? ? ?? ???? ?? PHP-L ? PHP_CODESNIFFER? ??????. 5. ???? ????? ???? ?? ?? ??? ?????? ??? ??????. AIAPI? ??? ? ???, ?? ??, ?? ? PHP ?? ??? ??? ???. ?? ???? PSR ??? ???, ??? ????? ????, ?? ??? ???, ????? ??? ????, X? ???????.

1. ?? ???? ??? ??? ?????? ?? ?? ??? ??, ??? ?? ???? ??? (? : ?? ???, ? ? ??), ?? ??? ?? ???? ???? ? ?? ?? ??? ??? ?? ??? ????????. 2. ?? ??? ??? ?? ? ??? ???? ?? ?? ?? ???? ?? ? ?? AUDIT ?? ??? ??? ? ????? ????? ??? ???????. 3. ?? ?? ??? ?? ??? ???????. Recaptchav3 ???? ??, ??? ?? ?? ?? ?? ??, IP ? ?? ??? ??? ??? ?? ???? ??? ?? ??? ????? ??? ???? ????? ??? ?????.

PHP? AI ??? ??? ?? ????? ??? API? ?? ?????. ??? ??? ????? ? ??? ???? ?????. API ??? ?? ?? ??? ???? ??? ??? ???? ???? ? ????. 2. ?? ?? ???? guzzle ?? curl? ???? HTTP ??? ???, JSON ??? ??? ? ???, API ? ?? ??, ??? ? ?? ??? ???? ??, ??? ?? ?? ? ? ?? ????, ??? ?? ? ?????? ?????. 3. ???? ???? ?? ???? API ??, ?? ? ??? ?? ??, ??? ?? ??, ?? ?? ? ??? ??? ??? ?????. ?? ??? ??? ??? ? ??? ???? Propt ?? ? ?? ?? ??, ??? ?? ? ?? ????, ?? ?? ?? ???? ? ??? ?? ? ???? ????? ?????.

PHP? ?????? ????? ?? ?? ?? ???? ???? ?? ???? ???? ?? ?? ???? ?????. 2. ?? ??? ???? ???? ?? ??? ?? ? ??? ??? ???? ?? API/Webhook ??? ??? ?? ???? ??? ??? ??? ??? ?????. 3. ?? ????? ?? ??, ??/???? ????, ???? ??, ???? ? ??? ?????? ????? ?? ??? ???? ???? ?? Dingtalk, SMS ?? ??? ???? ??? ?????? ???? ?? ? ??? ??? ????? ?? ??? ???? ???????.

PhpisstillRelevantinmodernenterpriseenvironments.1. Modernphp (7.xand8.x)? ??? ??, ??? ??, jitcompilation ? modernsyntax, mateitsuilableforlarge-scalepplications

??? AI ?? ?? ???? ???? PHPSDK? ??????. 2. PHP? ???? FFMPEG? ???? ???? API ?? ?? (? : WAV)?? ?????. 3. ??? ???? ????? ????? API ???? ??? ??????. 4. NLP ??? ???? JSON ??? ???? ???? ?????. 5. ?? ??? ???? ???? ?? ?? ?? ?? ?? ??? ?????. ?? ????? ?? ?? ? ??? ???? ?? ??? ???, ??? ?? ? ??? ???????.
