文档章节

php中cookie实现二级域名可访问操作实例

leycau
 leycau
发布于 2015/01/15 18:51
字数 585
阅读 6
收藏 0

cookie在一些应用中很常用,我有一个多级域名要可以同时访问主域名绑定的cookie,下面我来给大家具体介绍在php中利用setcookie实现二级域名可以成功访问主域名cookie值的方法.

有时候两个域名可能在不同的服务器上,但是我们依然希望二级域名能够顺利访问主域名的cookie,主域名可以顺利访问二级域名的cookie,比 如bbs.phpfensi.com 希望能访问 www.phpfensi.com 和 blog.phpfensi.com 的 cookie

下面介绍3种你可能常听到的全局cookie设置方式.

第一种实例代码如下:

setcookie("phpfensi",$s,time()+3600*12,'/','*.phpfensi.com');

*号无法成功设置一个cookie

第二种实例代码如下:

setcookie("phpfensi",$s,time()+3600*12,'/','.phpfensi.com');

成功设置一个全局cookie ss.phpfensi.com下也能正确读取

第三种实例代码如下:

setcookie("hzhuti",$s,time()+3600*12,'/','hzhuti.com');

成功设置一个全局cookie ss.phpfensi.com下也能正确读取

这种方式的理解是仅仅phpfensi.com能够读取,在FireFox下测试成功,IE下测试成功,代码如下:

setcookie("phpfensi",$s,time()+3600*12,'/','ss.phpfensi.com');

设置一个仅仅在ss.phpfensi.com域名下可以正确读取的cookie,网络上标准的说法为.phpfensi.com这样,也有*的说 法(该说法完全错误).下面推荐一个不错的php cookie操作的类,可以设置cookie、获取cookie、删除cookie,代码如下:

  1. <?php  

  2. /** 

  3. * php cookie类 

  4. * class:PHP_COOKIE 

  5. */ 

  6. class PHP_COOKIE  

  7. {  

  8.   var $_name  = "";  

  9.   var $_val   = array();  

  10.   var $_expires;  

  11.   var $_dir   = '/';// all dirs  

  12.   var $_site  = ''; 

  13.   function PHP_COOKIE($cname, $cexpires="", $cdir="/", $csite="")  

  14.   {  

  15. $this->_name=$cname; 

  16. if($cexpires){  

  17.   $this->_expires=$cexpires;  

  18. }  

  19. else{  

  20.   $this->_expires=time() + 60*60*24*30*12; // ~12 months  

  21. $this->_dir=$cdir;  

  22. $this->_site=$csite;  

  23. $this->_val=array();  

  24. $this->extract();  

  25.   } 

  26.   function extract($cname="")  

  27.   {  

  28. if(!isset($_COOKIE)){  

  29.   global $_COOKIE;  

  30.   $_COOKIE=$GLOBALS["HTTP_COOKIE_VARS"];  

  31. if(emptyempty($cname) && isset($this)){  

  32.   $cname=$this->_name;  

  33. }  

  34.  

  35. if(!emptyempty($_COOKIE[$cname])){ 

  36.   if(get_magic_quotes_gpc()){  

  37. $_COOKIE[$cname]=stripslashes($_COOKIE[$cname]);  

  38.   }  

  39.   $arr=unserialize($_COOKIE[$cname]); 

  40.   if($arr!==false && is_array($arr)){ 

  41. foreach($arr as $var => $val){ 

  42.   $_COOKIE[$var]=$val; 

  43.   if(isset($GLOBALS["PHP_SELF"])){  

  44.   $GLOBALS[$var]=$val;  

  45.   }  

  46. }  

  47.   } 

  48.   if(isset($this)) $this->_val=$arr; 

  49. }  

  50. // 在全局范围内移除cookie  

  51. unset($_COOKIE[$cname]);  

  52. unset($GLOBALS[$cname]);  

  53. function put($var, $value)  

  54. {  

  55. $_COOKIE[$var]=$value;  

  56. $this->_val["$var"]=$value; 

  57. if(isset($GLOBALS["PHP_SELF"])){  

  58.   $GLOBALS[$var]=$value;  

  59. if(emptyempty($value)){  

  60.   unset($this->_val[$var]);  

  61.   } 

  62.   function clear()  

  63.   {  

  64. $this->_val=array();  

  65.   } 

  66.   function set()  

  67.   {  

  68. if(emptyempty($this->_val)){  

  69.   $cookie_val="";  

  70. }   

  71. else {  

  72.   $cookie_val=serialize($this->_val);  

  73. }  

  74.  

  75. if(strlen($cookie_val)>4*1024){  

  76.   trigger_error("The cookie $this->_name exceeds the specification for the maximum cookie size.  Some data may be lost", E_USER_WARNING);  

  77. }  

  78. setcookie("$this->_name", $cookie_val, $this->_expires, $this->_dir, $this->_site);  

  79.   }  

  80. }  

  81. ?>


© 著作权归作者所有

leycau
粉丝 3
博文 69
码字总数 109273
作品 0
朝阳
程序员
私信 提问
HTML5中Access-Control-Allow-Origin解决跨域问题

跨域在开发中一些是一个比较常见的问题虽然有json或者xml来解决,现在html5开始流行了,我们可以通过Access-Control-Allow-Origin解决跨域问题,下面一起来看看。 A.abc.com 发起一个到 abc....

BearCatYN
2015/09/22
22.2K
0
合成图 + 跨域名静态文件服务器(cookie-free domains)

通过“合成图” 和 “跨域名静态文件服务器” 优化访问速度 http://www.wangchao123.com/2009/07/25/361 facebooke 合成图 google 和 face booke 的图标合成图 合成图方法 浏览一些大型专业网...

飞龙栖息地
2011/08/29
0
0
跨域登陆,IE下无法记录Cookie

作者:近乎团队 在Cookie规范上说,一个cookie只能用于一个域名,不能够发给其它的域名。当你在浏览器中对一个域名设置了一个cookie,这个 cookie对于其它的域名将无效。如果你想让你的用户从...

小近
2014/11/24
335
0
处理session跨域几种的方案

常用跨域共用session的是登录模块,我相信很多开发的朋友的都遇到过,只需要一个地方登录,相关联的网站也是处于登录状态。两种情况:一种9streets.cn和a.9streets.cn之间,另一种是a.com b...

mickelfeng
2015/12/23
146
0
Tomcat实现多域名之间session共享

最近启用二级域名后,面临一个主域名与二级域名之间 session 不能共享的问题,带来的麻烦就是用户在主域名登陆,但由于二级域名 session 不能共享,因此无法进行登陆的操作,对一些功能有一些...

wangxujun59
2016/11/25
12
0

没有更多内容

加载失败,请刷新页面

加载更多

面试题:你简历中写到熟悉Spring源码,那你给我说说它用到了那些设计模式?

Spring作为业界的经典框架,无论是在架构设计方面,还是在代码编写方面,都堪称行内典范。好了,话不多说,开始今天的内容。 spring中常用的设计模式达到九种。 模板方法(Template Method)...

我最喜欢三大框架
23分钟前
1
0
Sentinel Dashboard中修改规则同步到Nacos

上一篇我们介绍了如何通过改造Sentinel Dashboard来实现修改规则之后自动同步到Apollo。下面通过这篇,详细介绍当使用Nacos作为配置中心之后,如何实现Sentinel Dashboard中修改规则同步到N...

程序猿DD
30分钟前
4
0
Jenkins发送测试报告邮件

简介:总结怎么使用Jenkins执行自动化测试后发送测试报告邮件 一、系统设置 1、在Jenkins安装Email Extension Plugin插件,如下图: 2、设置Extended E-mail Notification (1)进入“系统管理”...

shzwork
32分钟前
1
0
状态模式

//相当把一个State对象存到Context对象中,然后通过Context实例化对象调用保存的state对象去调用state的相应的方法 https://blog.csdn.net/syc434432458/article/details/51210361...

南桥北木
44分钟前
3
0
基于 Jenkins + JaCoCo 实现功能测试代码覆盖率统计

本文首发于:Jenkins 中文社区 使用 JaCoCo 统计功能测试代码覆盖率? 对于 JaCoCo,有所了解但又不是很熟悉。 "有所了解"指的是在 CI 实践中已经使用 JaCoCo 对单元测试代码覆盖率统计: 当...

Jenkins中文社区
51分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部