《PHP實例:php針對cookie操作的隊列操作類實例》要點:
本文介紹了PHP實例:php針對cookie操作的隊列操作類實例,希望對您有用。如果有疑問,可以聯系我們。
本文實例講述了php針對cookie操作的隊列操作類.分享給大家供大家參考.具體分析如下:PHP實例
這里包括了從簡單的cookie操作(增加,刪除,修改)到我們的cookie隊列操作類的操作,對此感興趣的朋友可以參考一下.PHP實例
一、PHP 的COOKIEPHP實例
cookie 是一種在遠程瀏覽器端儲存數據并以此來跟蹤和識別用戶的機制.PHP實例
PHP 在http 協議的頭信息里發送cookie,因此 setcookie() 函數必須在其它信息被輸出到瀏覽器前調用,這和對? header() 函數的限制類似.PHP實例
設置cookie:PHP實例
可以用 setcookie()或 setrawcookie()函數來設置 cookie,也可以通過向客戶端直接發送http? 頭來設置.PHP實例
這里使用 setcookie()函數設置cookie:
PHP實例
代碼如下:
bool setcookie ( string name [, string value [,int expire [,string path [,string domain [,bool secure [,bool httponly]]]]]] )
其中的參數:PHP實例
name: cookie 變量名PHP實例
value: cookie 變量的值PHP實例
expire: 有效期結束的時間PHP實例
path: 有效目錄PHP實例
domain: 有效域名,頂級域唯一PHP實例
secure: 如果值為 1,則cookie 只能在https 連接上有效,如果為默認值 0,則http 和 https 都可以.PHP實例
來看幾個例子,簡單的:PHP實例
代碼如下:
SetCookie("MyCookie", "Value of MyCookie");
帶失效時間的.代碼如下:
PHP實例
代碼如下:
SetCookie("WithExpire", "Expire in 1 hour", time()+3600);//3600秒=1小時
什么都有的,代碼如下:
PHP實例
代碼如下:
SetCookie("FullCookie", "Full cookie value", time()+3600, "/forum", ".phpuser.com", 1);
我們需要用到隊列,代碼如下:
PHP實例
代碼如下:
class QueueSvc
{/*{{{*/
??? private $length; // 隊列的長度
??? private $server_arr;
????
??? public function __construct($length,$server_arr)
??? {
??????? $this->length = $length;
??????? $this->server_arr = $server_arr;
??? }
????
??? public function getServerArr()
??? {
??????? return $this->server_arr;
??? }
????
??? public function set($server_name)
??? {
??????? self::push($server_name);
??? }
????
??? private function push($server_name)
??? {
??????? //有重復的記錄,把重復的刪掉
??????? if(self::isServerExist($server_name)){
??????????? self::removeRepeat($server_name);
??????? }else{
??????????? if(self::isFull()){
??????????????? //如果已經滿了,要把隊列最后一個記錄刪掉
??????????????? array_pop($this->server_arr);
??????????? }
??????? }
??????? //如果隊列為空,先置為空數組
??????? if(emptyempty($this->server_arr))
??????????? $this->server_arr = array();
??????? //向隊列頭添加數據?
??????? array_unshift($this->server_arr,$server_name);??
??? }
????
??? private function isFull()
??? {
??????? if(is_array($this->server_arr) && (count($this->server_arr) >= $this->length))
??????????? return true;
??????? return false;?
??? }
????
??? private function isServerExist($server_name)
??? {
??????? if(is_array($this->server_arr) && in_array($server_name,$this->server_arr))
??????????? return true;
??????? return false;
??? }
????
??? private function removeRepeat($server_name)
??? {
??????? if(is_array($this->server_arr) && in_array($server_name,$this->server_arr))
??????? {
??????????? foreach($this->server_arr as $key=>$value)
??????????? {
??????????????? if($server_name == $value)
??????????????? {
??????????????????? $this->array_remove($this->server_arr,$key);
??????????????? }
??????????? }???
??????? }
??? }
????
??? private function array_remove(&$arr, $offset) {?????
??????? array_splice ( $arr, $offset, 1 );?
??? }
}/*}}}*/require_once('queue_svc.php');
class CookieSvc
{/*{{{*/
??? const?? COOKIE_KEY = "GAME_SERVER";
????
??? const?? SEPARATE?? = "|";
?
??? const?? COOKIE_LENGTH = "2";
????
??? public function getCookieArr()
??? {/*{{{*/
??????? $server_str =? $_COOKIE[self::COOKIE_KEY];
??????? $server_str =? $_COOKIE['GAME_SERVER'];
??????? if($server_str == ''){
??????????? $result =? array();
??????? }else{
??????????? $result = explode(self::SEPARATE,$server_str);
??????? }
??????? return $result;
??? }/*}}}*/
????
??? public function set($cookie_id)
??? {/*{{{*/
??????? $server_arr = self::getCookieArr();
??????? if($cookie_id != false)
??????? {
??????????? $que = new QueueSvc(self::COOKIE_LENGTH,$server_arr);
??????????? $que->set($cookie_id);
??????????? $server_new = $que->getServerArr();
??????????? if(is_array($server_new))
??????????? {
??????????????? $cookie_str = implode(self::SEPARATE,$server_new);
??????????????? setcookie(self::COOKIE_KEY,$cookie_str,time()+3600,'/');
??????????? }
??????? }
??? }/*}}}*/
}/*}}}*/
不多解釋了,這個別人用的不多,昨天因為需要寫的,留一下吧,也許以后還用得到,調用的代碼很簡單,代碼如下:
代碼如下:
require_once("queue_svc.php");
?
require_once("cookie_svc.php");
?
$cookie_id = '4';
?
CookieSvc::set($cookie_id);
這樣就可以了,大家可以每次把$cookie_id換做不同的值,來檢驗此操作,檢驗的代碼可以用如下代碼:
代碼如下:
var_dump($_COOKIE);
二、常見問題辦理:PHP實例
1. 用 setcookie()時有錯誤提示,可能是因為調用setcookie()前面有輸出或空格.也可能你的文檔是從其他字符集轉換過來,文檔后面可能帶有 BOM 簽名(就是在文件內容添加一些暗藏的BOM 字符),解決的辦法就是使你的文檔不出現這種情況,還有通過使用ob_start()函數也能處理一點.PHP實例
2. $_COOKIE 受magic_quotes_gpc 影響,可能自動轉義.PHP實例
3. 使用的時候,有必要測試用戶是否支持cookie.PHP實例
希望本文所述對大家的PHP程序設計有所贊助.PHP實例
維易PHP培訓學院每天發布《PHP實例:php針對cookie操作的隊列操作類實例》等實戰技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養人才。
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/13420.html