php中Cookie的设置与使用

来源:互联网 发布:霸业降级修为数据 编辑:程序博客网 时间:2024/05/21 08:42
1设置cookie
格式:  int SetCookie(string name, string value, int expire, string path, string domain, int secure); 
注释:  除了name之外所有的参数都是可选的。value,path,domain三个参数可以用空字符串代换,表示没有设置;
   expire 和 secure两个参数是数值型的,可以用0表示.
   expire参数是一个标准的Unix时间标记,可以用time()或mktime()函数取得,以秒为单位。
   secure参数表示这个Cookie是否通过加密的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); 

2、接收和处理Cookie 

PHP对Cookie的接收和处理的支持非常好,是完全自动的,跟FORM变量的原则一样,特别简单。 
比如设置一个名为MyCookier的Cookie,PHP会自动从WEB服务器接收的HTTP头里把它分析出来,并形成一个与普通变量一样的变量,名为$myCookie,这个变量的值就是Cookie的值。数组同样适用。另外一个办法是引用PHP的全局变量$HTTP_COOKIE_VARS数组。 
分别举例如下:(假设这些都在以前的页面里设置过了,并且仍然有效) 
echo $MyCookie; 
echo $CookieArray[0]; 
echo count($CookieArray); 
echo $HTTP_COOKIE_VARS["MyCookie"]; 
就这么简单。 

建议删除方法:
setcookie('mycookie','',time()-3600);

PHP提供一个很好用的函数mktime()。
你只要按顺序传送给mktime()你希望表示的小时,分钟,秒数,月份,日期,及年份,
mktime()就会返回该日期自1970年1月1日的总秒数。
因此,如果需要模拟 Y2K 问题:
$y2k = mktime(0,0,0,1,1,2000);
setcookie('name','value',$y2k);
setcookie('name', 'value', time+3600);
setcookie('name', 'value', $y2k, '~/myhome', '.domain.com');

获取COOKIE过期时间的办法
$expire = time() + 86400; // 设置24小时的有效期
setcookie ("var_name", "var_value", $expire); // 设置一个名字为var_name的cookie,并制定了有效期
setcookie ("var_name_expire", $expire, $expire); // 再将过期时间设置进cookie以便你能够知道var_name的过期时间

注:
在发送 cookie 时,cookie 的值会自动进行 URL 编码。接收时会进行 URL 解码。
如果你不需要这样,可以使用 setrawcookie() 代替。


   
原创粉丝点击