<script type="text/javascript"><!-- google_ad_client = "pub-0241434510974184"; /* 博客文章广告728x90, */ google_ad_slot = "7316585398"; google_ad_width = 728; google_ad_height = 90; // --></script><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script>
晚上特意花了个时间,自己动手试了下。
在项目中一直碰到Cookie跨域访问及SessionId跨域传递问题
范例:
index.php
<?php include_once('a.php'); session_start(); $_SESSION['k'] = uniqid(); setcookie("sess", session_id(), time()+3600, "/", ".ipggg.com"); echo "index.php<br />/n"; echo $_SESSION['k'].'<br />'; echo "<mce:script src="http://www.ipggg.com/test/b.php" mce_src="http://www.ipggg.com/test/b.php"></mce:script>"; var_dump($_COOKIE); echo "<br />/n"; ?>
a.php
<?php header('Content-type: text/html; charset=utf8'); /* 我注释掉P3P还是可以,难道是因为我RP太高?! 用IE7或者火狐都可以访问到值; 使用环境Vista home + xampp-win32-1.7.1套装 */ //header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"'); /* memory_limit是设置PHP使用内存时空间,一般设置为内存的四分之一,应该就查不多了。 */ @ini_set('memory_limit', '64M'); /* 指定会话模块是否在请求开始时自动启动一个会话。默认为 0(不启动)。 */ @ini_set('session.auto_start', 0); /* 以分钟数指定缓冲的会话页面的存活期,此设定对 nocache 缓冲控制方法无效。默认为180 */ @ini_set('session.cache_expire', 180); /* 指定是否启用透明 SID 支持。默认为 0(禁用)。 包含着会话名以及会话 ID 的常量,格式为 "name=ID",或者如果会话 ID 已经在适当的会话 cookie 中设定时则为空字符串。 */ @ini_set('session.use_trans_sid', 0); /* 指定是否在客户端用 cookie 来存放会话 ID。默认为 1(启用)。 */ @ini_set('session.use_cookies', 0); /* 标志着作为访问的Cookie只能通过HTTP协议。不过使用AJAX用PHP访问就可,纯JavaScript无效!只能防范一点点,而且不是所有浏览器都支持。 */ @ini_set("session.cookie_httponly", 1); /* 这个应该不用多说,PHP错误开关 */ @ini_set('display_errors', 1); ?>
b.php
<?php include_once('a.php'); session_id($_COOKIE['sess']); session_start(); setcookie("test", $_SESSION['k'], time()+3600, "/", ".ipggg.com"); ?>
设置C:/WINDOWS/system32/drivers/etc/hosts
127.0.0.1 www.ipggg.com
测试方法:
直接打开http://ipggg.com/程序存放目录/index.php
PS:
1、使用火狐搭配firebug进行调试;
2、官方建议使用strip_tags输出HTML,防范XSS