php重定向和查询字符串

php重定向和查询字符串,php,redirect,query-string,location,Php,Redirect,Query String,Location,我有剧本 <?php $to = $_GET["to"]; header("Location: $to"); ?> 参数$中只有http://site.ru/page.php?param1=1& 如何修复?我想要$to=http://site.ru/page.php?param1=1¶m2=2您可以在调用out.php的站点上转义URL: <a href="out.php?to=<?PHP echo htmlspecialchars(urlencod

我有剧本

    <?php
$to = $_GET["to"];

header("Location: $to");
?> 
参数$中只有
http://site.ru/page.php?param1=1&


如何修复?我想要
$to=http://site.ru/page.php?param1=1¶m2=2

您可以在调用
out.php的站点上转义URL

<a href="out.php?to=<?PHP echo htmlspecialchars(urlencode($to)); ?>">Go to $to</a>

$to必须是,但请注意,您向任何人提供了重定向脚本,因此,任何钓鱼者都可以使用它。

因此,最好将URL存储在数据库中,并只传递一个标识符。

尝试在base64中对URL进行编码,然后在您显示的示例中,在将其传递到标头之前对其进行解码:)

对其进行URL编码

urlencode($to)

是一个字符串中的保留字符。访问此URL时,
¶m2=2
被解释为属于当前URL,而不属于
to
的值
如果你想逐字传送,你必须使用
%26

http://site.ru/page.php?param1=1%26param2=2

大多数编程语言都提供了这样做的函数。(例如,)。最好是对整个URL进行编码。

您可以使用一个名为“html\u实体\u解码”的函数

或者使用md5函数对URL进行加密,然后在将其放入变量时对其进行解密


我希望这能帮助你

我以前遇到过同样的问题,我就是这么做的:

$arr=explode('?to=',$_SERVER['REQUEST_URI'],2);
$new_to=$arr[1];
现在可以使用$new_to变量。
当然,如果您将此用于生产环境,我建议按照其他建议的答案对url进行编码。我用它来测试curl脚本。以这种方式获取变量有很多缺陷,因此要小心。

md5是一个哈希函数。您通常无法从散列中检索原始值(但md5已被破坏;)。此外,您链接到的方法是将HTML中的特殊字符编码为HTML实体。这与在URL中编码字符非常不同。
$arr=explode('?to=',$_SERVER['REQUEST_URI'],2);
$new_to=$arr[1];