0

我的主要 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

4 回答 4

1

不要在不必要的时候使用正则表达式——你可以parse_url通过这种方式获得引用者并获得它的域,然后简单地将它与你的匹配。此外,正如 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';";
}
?>
于 2013-02-16T15:32:31.173 回答
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
}
?>
于 2013-02-16T15:32:58.880 回答
0

如果您需要在执行 PHP 代码时将用户重定向到另一个页面:您应该在浏览器中输出(回显)任何内容之前使用它:

<?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")必须包含绝对 URL - 感谢 PeeHaa

于 2013-02-16T15:33:44.953 回答
0
window.top.location.href=’http://realdomain.com’;

window.top.location.href='http://realdomain.com';

引号是错误的。使用单引号。

于 2013-02-16T15:34:09.057 回答