技术饭

PHP设置P3P实现跨域访问,字符串数组格式转换为实际数组

copylian    0 评论    4799 浏览    2016.12.27

编辑HOST 

编辑 C:\Windows\System32\drivers\etc\etc\hosts

加入

127.0.0.1        www.a.com

127.0.0.1        www.b.com

首先:创建 a_setcookie.php 文件,内容如下:

<?php 
 
//header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"'); 
setcookie("test", $_GET['id'], time()+3600, "/", ".a.com"); 
 
?>

然后:创建 a_getcookie.php 文件,内容如下:

<?php 
 
var_dump($_COOKIE); 
 
?>

最后:创建 b_setcookie.php 文件,内容如下:

<script src="http://www.a.com/a_setcookie.php?id=www.b.com"></script>

----------------------------

三个文件创建完毕后,我们通过浏览器依次访问:

http://www.b.com/b_setcookie.php

http://www.a.com/a_getcookie.php

我们会发现,在访问b.com域的时候,我们并没有在a.com域设置上cookie值。

然后我们修改一下a_setcookie.php文件,去掉注释符号,a_setcookie.php即为:

<?php  
 
header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');  
setcookie("test", $_GET['id'], time()+3600, "/", ".a.com");  
 
?>

再次通过浏览器依次访问:

http://www.b.com/b_setcookie.php

http://www.a.com/a_getcookie.php

这次,你会发现在访问b.com域的时候,我们设置了a.com域的cookie值。

末了补充一句,似乎只有IE对跨域访问COOKIE限制比较严格,上述代码在FIREFOX下测试,即使不发送P3P头信息,也能成功。


问题2:字符串内容为数组如何进行格式转换为数组

一个简单的应用,例:

<?php 

$str    =    "array( 'USD'=>'1', 'GBP'=>'0.6494', 'EUR'=>'0.7668' ,'JPY'=>'82.8150','RMB'=>'6.6480' )";
现有$str,内容为数组形式的数据。
想要得到真正的数组
$arr    = array( 'USD'=>'1', 'GBP'=>'0.6494', 'EUR'=>'0.7668' ,'JPY'=>'82.8150','RMB'=>'6.6480' );
处理办法是:
eval("\$arr = ".$str.'; ');
这样就得到数组$arr为字符串$str的数据的数组形式
跟js使用eval类似。。

?>


飓风呀
感谢你的支持,我会继续努力!
扫码打赏,感谢您的支持!

文明上网理性发言!

  • 还没有评论,沙发等你来抢