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 相关文章推荐
如何分别全角和半角以避免乱码
Oct 09 PHP
PHPExcel读取Excel文件的实现代码
Dec 06 PHP
浅析PHP递归函数返回值使用方法
Feb 18 PHP
php生成excel文件的简单方法
Feb 08 PHP
PHP利用MySQL保存session的实现思路及示例代码
Sep 09 PHP
php include类文件超时问题处理
Feb 06 PHP
常用的php图片处理类(水印、等比缩放、固定高宽)分享
Jun 19 PHP
深入解析PHP的Laravel框架中的event事件操作
Mar 21 PHP
PHP中加速、缓存扩展的区别和作用详解(eAccelerator、memcached、xcache、APC )
Jul 09 PHP
详解使用php调用微信接口上传永久素材
Apr 11 PHP
PHP如何获取当前主机、域名、网址、路径、端口等参数
Jun 09 PHP
PHP的mysqli_select_db()函数讲解
Jan 23 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
PHPMYADMIN 简明安装教程 推荐
2010/03/07 PHP
解析php中var_dump,var_export,print_r三个函数的区别
2013/06/21 PHP
PHP人民币金额转大写实例代码
2015/10/02 PHP
php经典算法集锦
2015/11/14 PHP
PHP中header用法小结
2016/05/23 PHP
laravel 框架结合关联查询 when()用法分析
2019/11/22 PHP
把JS与CSS写在同一个文件里的书写方法
2007/06/02 Javascript
jQuery新闻滚动插件 jquery.roller.js
2011/06/27 Javascript
一个页面放2段图片滚动代码出现冲突的问题如何解决
2012/12/21 Javascript
jquery的ajax请求全面了解
2013/03/20 Javascript
js中传递特殊字符(+,&amp;)的方法
2014/01/16 Javascript
轻松创建nodejs服务器(10):处理POST请求
2014/12/18 NodeJs
深入探讨javascript函数式编程
2015/10/11 Javascript
Javacript中自定义的map.js  的方法
2017/11/26 Javascript
vue cli升级webapck4总结
2018/04/04 Javascript
JavaScript实现无限轮播效果
2020/11/19 Javascript
python实现斐波那契递归函数的方法
2014/09/08 Python
简单介绍Python的Tornado框架中的协程异步实现原理
2015/04/23 Python
Apache如何部署django项目
2017/05/21 Python
Python 中pandas.read_excel详细介绍
2017/06/23 Python
Python基础教程之浅拷贝和深拷贝实例详解
2017/07/15 Python
python pygame模块编写飞机大战
2018/11/20 Python
Python实现监控Nginx配置文件的不同并发送邮件报警功能示例
2019/02/26 Python
python程序变成软件的实操方法
2019/06/24 Python
Django 批量插入数据的实现方法
2020/01/12 Python
Pytorch 实现focal_loss 多类别和二分类示例
2020/01/14 Python
浅谈tensorflow中Dataset图片的批量读取及维度的操作详解
2020/01/20 Python
利用Python脚本实现自动刷网课
2020/02/03 Python
Move Free官方海外旗舰店:美国骨关节健康专业品牌
2017/12/06 全球购物
什么是Assembly(程序集)
2014/09/14 面试题
幼师自我鉴定范文
2013/10/01 职场文书
金融管理毕业生求职信
2014/03/03 职场文书
本科应届生自荐信
2014/06/29 职场文书
解决numpy数组互换两行及赋值的问题
2021/04/17 Python
Pytorch 统计模型参数量的操作 param.numel()
2021/05/13 Python
SONY AN-LP1 短波有源天线放大器图
2022/04/05 无线电