PHP - 使用带字符串的$ _GET时出现“错误请求”错误

时间:2014-08-30 10:58:12

标签: php string get url-parameters

我尝试使用$ _GET获取两个参数,如下所示:

index.php:

<?php

include("../includes/simple_html_dom.php");

echo ("<!-- Written By: Alaa Elrifaie -->\n");

// Fetch user input
$data = htmlspecialchars($_GET["data"]);
$key = htmlspecialchars($_GET["key"]);

// Test if values have been fetched
echo($data . '<br>' . $key);
?>

传递这样的单词时效果很好:

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

但它会给出一个&#34; 404错误&#34;在尝试传递完整字符串时:

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

如何解决?因为我有必要实现它!

1 个答案:

答案 0 :(得分:0)

&#34;错误请求&#34; (通常是400状态代码)告诉您,您(客户端)向服务器发送了无法理解的输入。所以你的剧本没有什么问题,而是你传给它的东西。

正如您的问题下面的评论指出的那样,可能是这种情况,因为您向服务器发送了格式错误的请求字符串。查询参数(&#34;?&#34;在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 / decoder,请参阅this tool。 PHP有一个内置函数:urlencode将空格编码为&#39; +&#39;或rawurlencode将空格编码为&#39;%20&#39; (服从RFC3986