2014-08-30 33 views
-1

我想如下获取使用$ _GET两个参数时,我得到 “错误的请求” 错误经过一个字,这样当正常工作:

http://www.mywebsite.com/index.php?data=OneWord&key=AlsoOneWord 

但它提供了一个“404错误”试图通过一个完整的字符串时:

http://www.mywebsite.com/index.php?data=This is a set of data&key=This is the key! 
// This doesn't work 

如何解决?因为它是我必须实现的!

+0

请问您可以告诉我您的网站做了什么? – M98 2014-08-30 11:00:29

+1

尝试.urlencode() – 2014-08-30 11:03:01

+0

[urlencode()](http://php.net/manual/en/function.urlencode.php)您的参数 – 2014-08-30 11:03:08

回答

0

“错误请求”(通常为400状态码)告诉您,您(客户端)向无法理解的服务器发送了输入。所以你的脚本没有错,但是你传递给它的东西没有错。

正如您的问题下面的评论指出的那样,可能是这种情况,因为您发送格式错误的请求字符串到您的服务器。查询参数(后在URL中的 “?” 一切)必须对其进行编码的,这样反而

http://www.mywebsite.com/index.php?data=This is a set of data&key=This is the key! 
// This doesn't work 

你应该尝试

http://www.mywebsite.com/index.php?data=This%20is%20a%20set%20of%20data&key=This%20is%20the%20key! 
// This should work 

一个在线的URLEncoder /解码器见this tool。 PHP有一个内置函数:urlencode将空格编码为'+'或rawurlencode将空格编码为'%20'(服从RFC3986

+0

空格也可以编码为'+'。然后它变成'... index.php?data = This + is + a + set + of + data ...' – 2014-08-30 12:23:00

+0

当我使用'url-encoded'参数时,它会被转换成普通参数(解码)在浏览器中,再次发生404错误! – 2014-08-31 18:56:39

+0

我真的不知道你在说什么。 – Hirnhamster 2014-08-31 20:32:11