PHP重定向脚本不起作用。知道为什么吗?

时间:2013-02-16 15:25:36

标签: php javascript

我的主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
}
?>

但是,代码似乎不能实时工作。可能有什么不对?

4 个答案:

答案 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';

报价错了。使用单引号。