php设置cookie其他域名可访问,php中cookie实现二级域名可访问操作实例

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,代码如下:

/**

* 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);

}

}

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值