クッキー操作用のphpキュー操作クラスインスタンス、クッキーキュー
この記事の例では、Cookie 操作用の PHP のキュー操作クラスについて説明します。参考のためにみんなで共有してください。具体的な分析は次のとおりです:
これには、単純な Cookie 操作 (追加、削除、変更) から Cookie キューの操作までの操作が含まれます。これに興味のある友人は参照してください。
1. PHP クッキー
Cookie は、ユーザーを追跡および識別するためにリモート ブラウザーにデータを保存するメカニズムです。
PHP は http プロトコルのヘッダー情報で Cookie を送信するため、他の情報がブラウザーに出力される前に setcookie() 関数を呼び出す必要があります。これは header() 関数の制限と同様です。
クッキーを設定する:
setcookie() または setrawcookie() 関数を使用して Cookie を設定することも、HTTP ヘッダーをクライアントに直接送信することによって設定することもできます。
ここで setcookie() 関数を使用して Cookie を設定します:
コードをコピーします コードは次のとおりです:
bool setcookie ( string name [, string value [,int期限切れ [,string path [,string domain [,bool secure [,bool httponly]]]]] ])
パラメータ:
name: クッキー変数名
value: Cookie 変数の値
expire: 有効期間が終了する時刻
パス: 有効なディレクトリ
ドメイン: 有効なドメイン名、一意のトップレベル ドメイン
セキュア: 値が 1 の場合、Cookie は https 接続でのみ有効です。デフォルト値 0 の場合、http と https の両方が使用可能です。
簡単な例をいくつか見てみましょう:
コードをコピーします コードは次のとおりです:
SetCookie("MyCookie", "Value of MyCookie");
有効期限付きのコードは次のとおりです:
コードをコピー コードは次のとおりです:
SetCookie("WithExpire", "Expire in 1 hours", time()+3600);//3600 秒= 1 時間
すべてが利用可能です。コードは次のとおりです:
コードをコピーします コードは次のとおりです:
SetCookie("FullCookie", "完全な Cookie 値", time()+3600, "/forum", ".phpuser.com", 1);
キューを使用する必要があります。コードは次のとおりです:
コードをコピーします コードは次のとおりです:クラス QueueSvc
{/*{{{*/
Private $length; // キューの長さ
プライベート $server_arr;
パブリック関数 __construct($length,$server_arr)
{
$this->length = $length;
$this->server_arr = $server_arr;
}
パブリック関数 getServerArr()
{
$this->server_arr を返す
}
パブリック関数セット($server_name)
{
self::push($server_name);
}
プライベート関数プッシュ($server_name)
{
//重複したレコードがある場合は、重複したレコードを削除します
if(self::isServerExist($server_name)){
self::removeRepeat($server_name);
}その他{
if(self::isFull()){
// いっぱいの場合は、キューの最後のレコードを削除します
array_pop($this->server_arr);
}
//キューが空の場合は、まず空の配列に設定します
If(空の空($this->server_arr))
$this->server_arr = array();
//キューヘッドにデータを追加します
array_unshift($this->server_arr,$server_name);
}
プライベート関数 isFull()
{
If(is_array($this->server_arr) && (count($this->server_arr) >= $this->length))
true を返します。
false を返します。
}
プライベート関数 isServerExist($server_name)
{
If(is_array($this->server_arr) && in_array($server_name,$this->server_arr))
true を返します。
false を返します
}
プライベート関数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);
}
}
プライベート関数 array_remove(&$arr, $offset) {
array_splice ( $arr, $offset, 1 );
}
}/*}}}*/require_once('queue_svc.php');
クラス CookieSvc
{/*{{{*/
const COOKIE_KEY = "ゲームサーバー";
const SEPARATE = "|";
const COOKIE_LENGTH = "2";
パブリック関数 getCookieArr()
{/*{{{*/
$server_str = $_COOKIE[self::COOKIE_KEY];
$server_str = $_COOKIE['GAME_SERVER'];
if($server_str == ''){
$result = array();
}その他{
$result =explode(self::SEPARATE,$server_str);
}
$result を返します。
}/*}}}*/
パブリック関数セット($cookie_id)
{/*{{{*/
$server_arr = self::getCookieArr();
if($cookie_id != false)
{
$que = 新しい 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);
二、常见问题解决:
1. setcookie() を使用すると、setcookie() を使用する前に出力または空格があることが原因で、警告メッセージが表示されます。また、転送された文書が他の文字セットから移行されている可能性があり、文書の後ろに BOM 名が含まれている可能性があります (つまり、ファイルの内容にいくつかのセキュリティが追加されています)の BOM 文字符)、解决的办法就是使用你的文档不出现种情况、还有通使用ob_start()関数数也能处理一点。
2. $_COOKIE 受magic_quotes_gpc 影响、可能自动转义.
3. 使用するときは、Cookie がサポートされているかどうかを確認してください。
ここで説明されている大規模な PHP プログラムの設計が役立つことを望みます。
http://www.bkjia.com/PHPjc/925133.html
www.bkjia.comtruehttp://www.bkjia.com/PHPjc/925133.html技術記事具体的には次のように分析します。