我需要根据过去的事情进行动态重定向吗?在网址中。
所以举个例子。如果我发送如下链接:
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>
任何帮助都会很棒。
答案 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>