我的主index.php中有以下代码:
<script type="text/javascript" src="http://mydomain.com/test.php"></script>
以下是test.php中的代码:
<?php
$referringDomain = $_SERVER['HTTP_REFERER'];
$myDomain = 'mydomain.com';
if ( preg_match("($myDomain)i", $referringDomain, $matches) == false ) {
//no match - output redirect javascript
?>
window.top.location.href=’http://realdomain.com’;
<?
Die();
} else {
// do nothing
}
?>
但是,代码似乎不能实时工作。可能有什么不对?
答案 0 :(得分:1)
当你不需要时,不要使用正则表达式 - 你可以parse_url
refferer并以这种方式获取它的域,然后简单地将它与你的域匹配。另外,正如PeeHaa指出的那样,在JavaScript中,你使用了错误的引号。
<?php
$referrer = $_SERVER['HTTP_REFERER'];
$referringURL = parse_url($referrer);
$myDomain = 'mydomain.com';
if ($referringURL['hostname'] !== $myDomain) {
//no match - output redirect javascript
echo "window.top.location.href='http://realdomain.com';";
}
?>
答案 1 :(得分:0)
<?php
$referringDomain = $_SERVER['HTTP_REFERER'];
$myDomain = 'mydomain.com';
if ( preg_match("($myDomain)i", $referringDomain, $matches) == false ) {
//no match - output redirect javascript
?>
<script>
window.top.location.href="http://realdomain.com";
</script>
<?php
Die();
} else {
// do nothing
}
?>
答案 2 :(得分:0)
如果您需要在执行PHP代码时将用户重定向到另一个页面: 您应该在浏览器中使用此BEFORE输出(回显)任何内容:
<?php
header("Location: http://www.website.com/anotherpage.php") ;
exit() ;
?>
当前代码执行将终止,因此您可以减少服务器上的负载。在使用JavaScript时,PHP将执行代码直到最后,将其输出到浏览器中,然后浏览器才会重定向用户。
但是如果在加载页面后需要重定向,则可以选择:
<script>
window.location = "anotherpage.php" ;
//or window.location.href = "anotherpage.php" ;
</script>
编辑:header("Location: $url")
必须包含绝对网址 - 感谢PeeHaa
答案 3 :(得分:0)
window.top.location.href=’http://realdomain.com’;
到
window.top.location.href='http://realdomain.com';
报价错了。使用单引号。