重定向器或anony克隆

时间:2012-12-02 16:29:00

标签: php redirect referrer

我需要根据过去的事情进行动态重定向吗?在网址中。

所以举个例子。如果我发送如下链接:

http://go.com?http://link1.com

go.com加载一个有15秒加载页面的页面。这个页面上会有一些html。如果该人没有做任何事情,只需在15秒后重定向到link1.com。

在问号

之后添加的任何网址都会发生此操作

http://go.com?http://link2.com http://go.com?http://link5.com 等

这是我找到的代码,但它不起作用。

<?php
$delay = "15"; # how many seconds expire before automatic redirect
$site = $_GET['url']; ?>
<html>
<head>
<meta http-equiv="refresh" content="<?php echo $delay; ?>;url=http://<?php echo $site; ?>">
</head>
<body>
  redirecting you to <?php echo $site; ?> in <?php echo $delay; ?> seconds ...</p>
</body>
</html>

任何帮助都会很棒。

3 个答案:

答案 0 :(得分:0)

将您的网址格式化为http://go.com/?url=http://link1.com或使用$_SERVER['QUERY_STRING']进行访问。

考虑您要重定向到的URL的URL编码;否则,目标网址的某些部分可能会被浏览器误解为go.com网址的一部分,并且您最终会遇到奇怪的错误和损坏的重定向。请查看urlencode()urldecode()

创建用户点击的链接以进入重定向页面

<a href="http://go.com?<?=urlencode("http://link1.com/?a=b&c=d#e")?>">Go to Link1!</a>

这会将示例目标网址http://link1.com/?a=b&c=d#e转换为http%3A%2F%2Flink1.com%2F%3Fa%3Db%26c%3Dd%23e,以便任何:/? &安培; link1.com网址中的#个字符不会影响go.com页面的行为。

获取重定向页面上的链接

$site = urldecode($_SERVER['QUERY_STRING']);

这使用我建议的$_SERVER['QUERY_STRING']来获取目标网址,而不是$_GET['url'],包含在urldecode()中以撤消我们在上一步中执行的操作,以便urlencode()生成的garglemesh 1}}将被转回到我们可以在meta标记中使用的普通网址。

此外,根据此代码,您的重定向器页面网址和重定向http://标记中似乎都有meta,导致尝试重定向到http://http://link1.com。从元标记中删除http://

此外,如果您确实坚持重定向页面(这很烦人),请为我们这些没有15秒钟等待盯着我们的人添加“点击此处立即重定向”链接没什么重要的。

答案 1 :(得分:0)

您应该使用urlencode和urldecode函数来解决目标网址中特殊字符的任何问题。您可以参考以下问题:How do I use a hyperlink in link variable?

答案 2 :(得分:0)

工作代码

<?php
$delay = 5; # how many seconds expire before automatic redirect
$delayMili = $delay * 1000; //converting it to miliseconds
$site = $_GET['url'];
?>
<html>
    <head>
        <script type='text/JavaScript'>
            setTimeout('window.location="<?php echo $site; ?>"',<?php echo $delayMili;?>)
        </script>
    </head>
    <body>
        redirecting you to <?php echo $site; ?> in <?php echo $delay; ?> seconds ...</p>
</body>
</html>