使用CURL发送的无效REQUEST_URI的解决方案

时间:2011-03-25 06:38:08

标签: php apache url

使用这个php脚本,我可以调用webservice。文件名将记录在数据库中。他们被要求并且不存在。

$url     = "http://test.com/test.php?request=file name.jpg";
$ch      = curl_init();
curl_setopt( $ch, CURLOPT_URL,            $url     );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, TRUE     );
$data = curl_exec( $ch );
print( $data );
curl_close( $ch );

问题是“file name.jpg”。它没有编码。 当它到达webservice时,请求URI看起来像这样

["REQUEST_URI"]=> string(28) "/test/test.php?filename=file"

它会在第一个空格字符的开头截断url。

我的问题是我无法控制人们发送此请求的方式。当然他们应该使用urlencode功能,但我不能强迫它们。

所以我需要一个解决方案来获取完整的REQUEST URI,或者将其视为错误。

1 个答案:

答案 0 :(得分:1)

如果人们发送无效请求,除了检测到$_GET['filename']无效(我认为,在服务器上存在不存在的文件?)之外,您无能为力,并返回404,可能?)错误。

而且,是的,应该转义一个空格 - 请参阅RFC 23962.4.3. Excluded US-ASCII Characters部分。