Решение для недействительного REQUEST_URI, отправленного с использованием CURL - PullRequest
0 голосов
/ 25 марта 2011

Используя этот php-скрипт, я могу вызвать веб-сервис. Имена файлов будут записаны в базу данных. Они запрашиваются и не существуют.

$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». Это не закодировано. Когда он попадает в веб-сервис, URI запроса выглядит следующим образом

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

Усекает URL в начале первого пробела.

Моя проблема в том, что я не могу контролировать, как люди отправляют этот запрос. Конечно, они должны выполнять функцию urlencode, но я не могу их заставить.

Так что мне нужно решение, чтобы получить полный URI REQUEST или перехватить это как ошибку.

1 Ответ

1 голос
/ 25 марта 2011

Если люди отправляют недействительные запросы, вы ничего не можете сделать, кроме как обнаружить $_GET['filename'] недействительным (несуществующий файл, я полагаю, на вашем сервере?) и вернуть их (404, возможно?) ошибка.

И, да, пробел должен быть экранирован - см. раздел 2.4.3. Excluded US-ASCII Characters из RFC 2396 .

...