我有http://mysite.com/go.php?site=http://somesite.com/main/?s=12&action=load
<?php
$url = $_GET['site'];
echo "<meta http-equiv=\"refresh\" content=\"0;url=" . $url . "\">";
然而,我http://somesite.com/main/?s=12
无法加载。
如何转到http://somesite.com/main/?s=12&action=load
答案 0 :(得分:4)
您需要先urlencode()
作为site
变量传递的网址(即创建go.php链接时)。
作为旁注,如果这是您的页面输出的唯一内容,为什么不使用
header("Location: ".$url);
它会向浏览器发出302 Found
标题,告诉它跟随新位置,而不是输出HTML(如果输出没有正确的页面结构,则无论如何都会被破坏)。
答案 1 :(得分:0)
[编辑]:新解决方案
这就像一个魅力。我在我的机器上测试过。
$url = urldecode(substr(http_build_query($_GET),5));
echo "<meta http-equiv=\"refresh\" content=\"0;url=" . $url . "\">";
旧解决方案(不工作)
将您的代码更改为:
$url = $_GET['site'];
echo "<meta http-equiv=\"refresh\" content=\"0;url=" . urlencode($url) . "\">";
答案 2 :(得分:0)
您需要将要传递的参数编码为site
参数。您可以在PHP中使用urlencode()
或在javascript中使用encodeURI()
。
所以这就像是:
http://mysite.com/go.php?site=http%3a%2f%2fsomesite.com%2fmain%2f%3fs%3d12%26action%3dload
现在在PHP中,你可以这样做:
<?php
header("Location: ".$_GET['site']);
?>