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 相关文章推荐
php GD绘制24小时柱状图
Jun 28 PHP
PHP zlib扩展实现页面GZIP压缩输出
Jun 17 PHP
深入理解PHP几个算法:PHP冒泡、PHP二分法、PHP求素数、PHP乘法表
Jun 06 PHP
解决PhpMyAdmin中导入2M以上大文件限制的方法分享
Jun 06 PHP
thinkphp模板用法和内容输出实例
Nov 28 PHP
PHP设计模式之适配器模式代码实例
May 11 PHP
PHP判断是否连接上网络的方法
Jul 01 PHP
thinkphp项目如何自定义微信分享描述内容
Feb 20 PHP
PHP树形结构tree类用法示例
Feb 01 PHP
PHP通过GD库实现验证码功能示例
Feb 23 PHP
php链式操作的实现方式分析
Aug 12 PHP
PHP7 整型处理机制修改
Mar 09 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
Search Engine Friendly的URL设计
2006/10/09 PHP
PHP新手上路(五)
2006/10/09 PHP
php中的MVC模式运用技巧
2007/05/03 PHP
php结合表单实现一些简单功能的例子
2011/06/04 PHP
Zend Framework教程之Application和Bootstrap用法详解
2016/03/10 PHP
thinkphp隐藏index.php/home并允许访问其他模块的实现方法
2016/10/13 PHP
PHP实现统计在线人数功能示例
2016/10/15 PHP
ThinkPHP整合datatables实现服务端分页的示例代码
2018/02/10 PHP
Nigma vs Alliance BO5 第三场2.14
2021/03/10 DOTA
ASP.NET jQuery 实例8 (动态添加内容到DropDownList)
2012/02/03 Javascript
浅析js中2个等号与3个等号的区别
2013/08/06 Javascript
jQuery Mobile中的button按钮组件基础使用教程
2016/05/23 Javascript
vue2.0使用Sortable.js实现的拖拽功能示例
2017/02/21 Javascript
React-Native做一个文本输入框组件的实现代码
2017/08/10 Javascript
如何去除vue项目中的#及其ie9兼容性
2018/01/11 Javascript
vue-image-crop基于Vue的移动端图片裁剪组件示例
2018/08/28 Javascript
js操作table中tr的顺序实现上移下移一行的效果
2018/11/22 Javascript
js取0-9随机取4个数不重复的数字代码实例
2019/03/27 Javascript
基于leaflet.js实现修改地图主题样式的流程分析
2020/05/15 Javascript
2款Python内存检测工具介绍和使用方法
2014/06/01 Python
python爬虫增加访问量的方法
2019/08/22 Python
Python如何通过Flask-Mail发送电子邮件
2020/01/29 Python
凯特·丝蓓英国官网:Kate Spade英国
2016/11/07 全球购物
Mytheresa美国官网:德国知名的女性奢侈品电商
2017/05/27 全球购物
卡西欧G-SHOCK英国官网: 防水防震手表
2018/01/08 全球购物
香港连卡佛百货官网:Lane Crawford
2019/09/04 全球购物
卫生院健康教育实施方案
2014/06/07 职场文书
环境卫生工作汇报材料
2014/10/28 职场文书
领导干部个人整改措施落实情况汇报
2014/10/29 职场文书
2015年社区服务活动总结
2015/03/25 职场文书
最美劳动诗,致敬所有的劳动者!
2019/07/12 职场文书
Redis 彻底禁用RDB持久化操作
2021/07/09 Redis
opencv用VS2013调试时用Image Watch插件查看图片
2021/07/26 Python
JavaScript实现两个数组的交集
2022/03/25 Javascript
Spring依赖注入多种类型数据的示例代码
2022/03/31 Java/Android
Redis基本数据类型Set常用操作命令
2022/06/01 Redis