php中cookie实现二级域名可访问操作的方法


Posted in PHP onNovember 11, 2014

本文实例讲述了php中cookie实现二级域名可访问操作的方法。分享给大家供大家参考。具体方法如下:

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

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

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

第一种实例代码如下:

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

*号无法成功设置一个cookie

第二种实例代码如下:

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

成功设置一个全局cookie,这样在ss.3water.com下也能正确读取

第三种实例代码如下:

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

成功设置一个全局cookie,在ss.3water.com下也能正确读取

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

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

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

<?php   

/**  

* php cookie类  

* class:PHP_COOKIE  

*/  

class PHP_COOKIE   

{   

  var $_name  = "";   

  var $_val   = array();   

  var $_expires;   

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

  var $_site  = '';  

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

  {   

$this->_name=$cname;  

if($cexpires){   

  $this->_expires=$cexpires;   

}   

else{   

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

}  

$this->_dir=$cdir;   

$this->_site=$csite;   

$this->_val=array();   

$this->extract();   

  }  

  function extract($cname="")   

  {   

if(!isset($_COOKIE)){   

  global $_COOKIE;   

  $_COOKIE=$GLOBALS["HTTP_COOKIE_VARS"];   

}  

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

  $cname=$this->_name;   

}   

  

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

  if(get_magic_quotes_gpc()){   

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

  }   

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

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

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

  $_COOKIE[$var]=$val;  

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

  $GLOBALS[$var]=$val;   

  }   

}   

  }  

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

}   

// 在全局范围内移除cookie   

unset($_COOKIE[$cname]);   

unset($GLOBALS[$cname]);   

}  

function put($var, $value)   

{   

$_COOKIE[$var]=$value;   

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

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

  $GLOBALS[$var]=$value;   

}  

if(emptyempty($value)){   

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

}  

  }  

  function clear()   

  {   

$this->_val=array();   

  }  

  function set()   

  {   

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

  $cookie_val="";   

}    

else {   

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

}   

  

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

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

}   

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

  }   

}   

?>

希望本文所述对大家的PHP程序设计有所帮助。

PHP 相关文章推荐
在PWS上安装PHP4.0正式版
Oct 09 PHP
简单的页面缓冲技术
Oct 09 PHP
PHP中删除变量时unset()和null的区别分析
Jan 27 PHP
Smarty的配置与高级缓存技术分享
Jun 05 PHP
php mssql扩展SQL查询中文字段名解决方法
Oct 15 PHP
php smarty模板引擎的6个小技巧
Apr 24 PHP
php数组排序usort、uksort与sort函数用法
Nov 17 PHP
Android AsyncTack 异步任务实例详解
Nov 02 PHP
PHP文件操作详解
Dec 30 PHP
深入解析Laravel5.5中的包自动发现Package Auto Discovery
Sep 13 PHP
php微信公众号开发之现金红包
Apr 16 PHP
详解在YII2框架中使用UEditor编辑器发布文章
Nov 02 PHP
php实现的css文件背景图片下载器代码
Nov 11 #PHP
PHP获取数组中重复最多的元素的实现方法
Nov 11 #PHP
利用PHP函数计算中英文字符串长度的方法
Nov 11 #PHP
php下foreach提示Warning:Invalid argument supplied for foreach()的解决方法
Nov 11 #PHP
PHP基于imap获取邮件实例
Nov 11 #PHP
php无限极分类递归排序实现方法
Nov 11 #PHP
php实现压缩多个CSS与JS文件的方法
Nov 11 #PHP
You might like
推荐Discuz!5的PHP代码高亮显示与实现可运行代码
2007/03/15 PHP
PHP curl模拟浏览器采集阿里巴巴的实现代码
2011/04/20 PHP
使用IE6看老赵的博客 jQuery初探
2010/01/17 Javascript
JAVASCRIPT实现的WEB页面跳转以及页面间传值方法
2010/05/13 Javascript
关于页面嵌入swf覆盖div层的问题的解决方法
2014/02/11 Javascript
jQuery中not()方法用法实例
2015/01/06 Javascript
js 获取元素在页面上的偏移量的方法汇总
2015/04/13 Javascript
AngularJs中route的使用方法和配置
2016/02/04 Javascript
引入JavaScript时alert弹出框显示中文乱码问题
2017/09/16 Javascript
Angular实现表单验证功能
2017/11/13 Javascript
深入分析element ScrollBar滚动组件源码
2019/01/22 Javascript
详解Vue中使用插槽(slot)、聚类插槽
2019/04/12 Javascript
详解一个小实例理解js原型和继承
2019/04/24 Javascript
vue通过数据过滤实现表格合并
2020/11/30 Javascript
微信小程序 调用远程接口 给全局数组赋值代码实例
2019/08/13 Javascript
vue 自动化路由实现代码
2019/09/03 Javascript
微信小程序可滑动月日历组件使用详解
2019/10/21 Javascript
jQuery实现回到顶部效果
2020/10/19 jQuery
[43:48]Ti4正赛第一天 VG vs NEWBEE 2
2014/07/19 DOTA
Python转码问题的解决方法
2008/10/07 Python
在Django的视图(View)外使用Session的方法
2015/07/23 Python
python实现读取大文件并逐行写入另外一个文件
2018/04/19 Python
在python中将字符串转为json对象并取值的方法
2018/12/31 Python
Python批量启动多线程代码实例
2020/02/18 Python
python实现与redis交互操作详解
2020/04/21 Python
外科实习自我鉴定
2013/10/06 职场文书
运动会入场词60字
2014/02/15 职场文书
作文评语大全
2014/04/23 职场文书
槐乡的孩子教学反思
2014/04/27 职场文书
少先队辅导员事迹材料
2014/12/24 职场文书
2015年小学数学教师个人工作总结
2015/05/25 职场文书
2015年幼儿园班主任个人工作总结
2015/10/22 职场文书
公司年会主持词范文!
2019/05/07 职场文书
python3读取文件指定行的三种方法
2021/05/24 Python
SpringBoot集成Redis的思路详解
2021/10/16 Redis
Python PIL按比例裁剪图片
2022/05/11 Python