1

我需要根据过去的任何内容进行动态重定向?在网址中。

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

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>

任何帮助都会很棒。

4

3 回答 3

0

您应该使用 urlencode 和 urldecode 函数来避免目标 url 中特殊字符的任何问题。您可以参考这个问题:如何在链接变量中使用超链接?

于 2012-12-02T16:40:22.610 回答
0

将您的 URL 格式化为http://go.com/?url=http://link1.com或用于$_SERVER['QUERY_STRING']访问它。

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

创建链接时,用户单击以进入重定向页面

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

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

获取重定向页面上的链接时

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

这使用我建议$_SERVER['QUERY_STRING']的获取目标 URL 而不是$_GET['url'], 包裹 inurldecode()以撤消我们在上一步中所做的操作,以便将生成的 garglemeshurlencode()转换回我们可以在meta标签中使用的正常外观 URL。

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

此外,如果您确实坚持要重定向页面(这很烦人),请为我们这些没有 15 秒等待时间的人添加一个“单击此处立即重定向”链接到页面.

于 2012-12-02T16:32:35.033 回答
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>
于 2012-12-02T16:48:06.767 回答