php队列教程,php cookie操作之队列操作类

文章从最简单的cookie操作(增加,删除,修改)到我们的cookie队列操作类的操作,有需要了解的同学可以参考本实例.

1、设置Cookie

1. PHP 的COOKIE

cookie 是一种在远程浏览器端储存数据并以此来跟踪和识别用户的机制。

PHP 在http 协议的头信息里发送cookie,因此 setcookie() 函数必须在其它信息被输出到浏览器前调用,这和对  header() 函数的限制类似.

1.1 设置cookie:

可以用 setcookie()或 setrawcookie()函数来设置 cookie,也可以通过向客户端直接发送http  头来设置.

1.1.1 使用 setcookie()函数设置cookie:

bool setcookie ( string name [, string value [,int expire [,string path [,string domain [,bool secure [,bool httponly]]]]]] )

name: cookie 变量名

value: cookie 变量的值

expire: 有效期结束的时间

path: 有效目录

domain: 有效域名,顶级域唯一

secure: 如果值为 1,则cookie 只能在https 连接上有效,如果为默认值 0,则http 和 https 都可以.

来看几个例子,简单的:SetCookie("MyCookie", "Value of MyCookie");

带失效时间的.代码如下:

SetCookie("WithExpire", "Expire in 1 hour", time()+3600);//3600秒=1小时

什么都有的,代码如下:

SetCookie("FullCookie", "Full cookie value", time()+3600, "/forum", ".phpuser.com", 1);

我们需要用到队列,代码如下:

classQueueSvc

{/*{{{*/

private$length;// 队列的长度

private$server_arr;

publicfunction__construct($length,$server_arr)

{

$this->length =$length;

$this->server_arr =$server_arr;

}

publicfunctiongetServerArr()

{

return$this->server_arr;

}

publicfunctionset($server_name)

{

self::push($server_name);

}

privatefunctionpush($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);

}

privatefunctionisFull()

{

if(is_array($this->server_arr) && (count($this->server_arr) >=$this->length))

returntrue;

returnfalse;

}

privatefunctionisServerExist($server_name)

{

if(is_array($this->server_arr) && in_array($server_name,$this->server_arr))

returntrue;

returnfalse;

}

privatefunctionremoveRepeat($server_name)

{

if(is_array($this->server_arr) && in_array($server_name,$this->server_arr))

{

foreach($this->server_arras$key=>$value)

{

if($server_name==$value)

{

$this->array_remove($this->server_arr,$key);

}

}

}

}

privatefunctionarray_remove(&$arr,$offset) {

array_splice($arr,$offset, 1 );

}

}/*}}}*/require_once('queue_svc.php');

classCookieSvc

{/*{{{*/

constCOOKIE_KEY ="GAME_SERVER";

constSEPARATE   ="|";

constCOOKIE_LENGTH ="2";

publicfunctiongetCookieArr()

{/*{{{*/

$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;

}/*}}}*/

publicfunctionset($cookie_id)

{/*{{{*/

$server_arr= self::getCookieArr();

if($cookie_id!= false)

{//开源代码vcphp.com

$que=newQueueSvc(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.

(责任编辑:最模板)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值