3

到目前为止,我只是在阅读,但现在我有我的第一个问题,希望有人可以帮助我。

您通过提交执行搜索:

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 进行编码)我得到:

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

也许我应该在之前对 url 进行编码重定向?但我收到一个错误(网址不可读?)

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

重定向后如何实现这一点,我仍然可以获得与第一个 url 相同的结果,并且不会丢失示例中的特殊字符?

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

4

2 回答 2

3

我认为你需要rawurlencode()

于 2013-05-16T14:31:57.833 回答
1

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

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

对于页面后的第一个 var,您使用“?” 对于之后的每个 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 
于 2013-05-16T14:41:46.957 回答