Вопрос не относится конкретно к CakePHP и WebORb, но это общий вопрос о том, как выполнить HTTP GET для URL со строкой запроса, содержащей специальные символы.Код возврата сервера, равный 500, указывает на то, что платформа MVC возвращает ошибку сервера, что указывает на то, что запрос не был правильно сформирован.В будущем - fwiw - хорошо иметь мгновенный магазин журнала ошибок Apache, чтобы увидеть, какая ошибка была выдана за кодом 500.
Вот что должно происходить:
Программа хочет выполнить HTTP GET для url / controller / action / query_string
query_string должен быть url_encoded, но кроме того, поскольку строка запроса может содержать кавычки и амперсанды, которые разбивают строку, она также должна обрабатываться с помощьюhtmlentities
В случае Майкла у него есть 3 параметра - $ data, $ rawdataset, $ status, которые составляют строку запроса, такую как: service / controller / action / data / rawdataset / status
Здесьфрагмент кода PHP, который должен работать:
$ query_string = urlencode ($ data).'/'.urlencode ($ rawdataset). '/'. urlencode ($ status);
затем выполните http_get ('service /'. htmlentities ($ query_string)), http_get вернет HTTP-ответ.
Аналогичная стратегия может быть использована для HTTP POST
В общем случае, если строка запроса не является целым числом, это то, что необходимо сделать.
Внутри действия контроллера CakePHP, которое фактически обрабатываетэту строку запроса можно статически вызвать классом Sanitize следующим образом:
App :: import ('Sanitize');
Служба класса расширяет AppController {... ...}
AFAIK - если вы используете методы ORM в CakePHP (такие как find () и save ()) и правильную запись массива (т. Е. Array ('field' => $ value)) вместо необработанного SQL, действие контроллера будетуже защищены от уязвимостей SQL-инъекций.Не должно быть необходимости выполнять вручную созданный SQL, как только параметры данных попадают в действие контроллера.
В любом случае это лучший метод в любой среде MVC, такой как CakePHP, RoR или Django.
Позвольте мнезнать, как это работает Дэнни