php位置重定向和特殊字符

时间:2013-05-16 14:28:25

标签: php redirect get urlencode

到现在为止我只是在阅读,但现在我有了第一个问题,希望有人能帮助我。

您通过提交执行搜索:

input: Lösung? Tösung& -> url: http://127.0.0.1/?search=Lösung%3F+Tösung%26

如果您尚未登录,则我使用url_encode将搜索重定向(位置标题)以登录:

...login/return_url=http%3A%2F%2F127.0.0.1%2F%3Fsearch%3DLösung%3F+Tösung%26amp%3B

我错了' $ _GET的结果[' return_url']:

http://127.0.0.1/?search=Lösung? Tösung&

登录后和重定向后(不再重新编码网址)我得到:

url: http://127.0.0.1/?search=Lösung? Tösung&  -> input: Lösung? Tösung

也许我应该重新定位以前编码网址?但是我收到错误(网址不可读?)

header("Location: ".urlencode(url)."");

如何在重定向后实现这一点,我仍然可以获得与第一个网址相同的结果,而不会像示例中那样丢失特殊字符?

也许这很简单但直到现在我没有得到正确的结果,并希望你能提供帮助。

2 个答案:

答案 0 :(得分:3)

我认为你需要rawurlencode()

答案 1 :(得分:1)

我看到的第一件事是给出了错误的网址。 URL中$ _GET []的格式应为

http:// domain.com/index.php?myvar=var&myfoo=foo

对于页面后的第一个var,您使用'?' 对于之后的每个变量,您将它们与'&'

结合起来

urlencode和urldecode修复了你的问题。

$url= "http://www.mysite.com/index.php?search=location&option=europe";

$encoded = urlencode($url);
// result: http%3A%2F%2Fwww.mysite.com%2Findex.php%3Fsearch%3Dlocation%26option%3Deurope 

$decoded = urldecode($encoded);
// result: http://www.mysite.com/index.php?search=location&option=europe

使用您的网址:

$url= "http://127.0.0.1/?search=Lösung%3F+Tösung%26";

编码:

http%3A%2F%2F127.0.0.1%2F%3Fsearch%3DL%C3%B6sung%253F%2BT%C3%B6sung%2526

解码:

http://127.0.0.1/?search=Lösung%3F+Tösung%26