想起前不久看过的PHP模式一书,对于里面说到的值对象模式,愈想,疑惑更浓。动手写了个例题,却让疑问更上一层楼。理论上,PHP5中,通过new进行对象资源的赋值传递的是对象资源的指针,如PHP4中指针传递一样。
[php]
class a {
var $b;
public function __construct() {
$this->b = 1;
}
function setb($b) {
$this->b = $b;
}
}
$test1 = new a;
$test2 = new a;
$test1->setb(2);
echo $test1->b;
echo $test2->b;
[/php]
按上面的理解应该是,$test1, $test2指向同一个地址,不管其中的那个值改变,都会影响到另外一个变量。但是,结果却是:
[code lang="text"]
2
1
[/code]
不知道这个问题该做何解?
又想到大概2个月前,项目中出现的问题,
$_SERVER['HTTP_REFERER']在IE6下取不到对应的值。当时,跑遍了国内外网站,得到的结论是:这是PHP在IE6下的bug,因为当时时间仓促,自己也就没去做测试。因为上面的问题,于是,也就写了一个测试案例在IE6下做测试,结果却是:能取得到值。又Google了下,看到了2月前的看过的文章,但也有个新的收获,一般情况下,为了保证链接的安全性,这个值都是不提倡使用的。
用PHP,HTML, JS实现跳转,$_SERVER['HTTP_REFERER'],测试的结果如下:
[code lang="js"]
//JS:
window.location = "http://www.*****.com/";
[/code]
FF下有值,IE下无值
[html]
//Meta Refresh:
<meta http-equiv="refresh" content="5;url=http://www.*****.com"/>
[/html]
FF, IE6下均无值
[php]
//HTTP 302 Header Redirect in PHP
header('Location: http://www.*****.com', true, 302);
exit;
[/php]
FF, IE6下均无值
另外,查到的资料如是说:若启用了HTTPS,不管那种情况都是取不到HTTP_REFERER值。因为无测试环境,这个就无从得知了~
没有评论:
发表评论