PHP: есть ли какой-либо способ отфильтровать «необработанный» ввод GET?

#php #get

#php #получить

Вопрос:

У меня есть доступ к серверу, который запускает PHP-скрипт для анализа данных, отправленных из приложения, к которому у меня нет доступа. Данные отправляются через HTTP GET, и это не конфиденциальные данные. Проблема в том, что иногда пользователь вставляет «недопустимые» символы, такие как «#», и это полностью нарушает синтаксический анализ PHP get. Например: если сервер получает «input.php?name=John#Doeamp;email=test@gmail.com «, все, что анализируется, это name=»John». Остальное потеряно. Мой план состоит в том, чтобы «отфильтровать» неверные символы из входных данных до того, как будет проанализирован массив GET. Я пытался использовать $_SERVER[‘QUERY_STRING’] и $_SERVER[‘REQUEST_URI’], но ничего не получилось. Мой вопрос: возможно ли использовать PHP для фильтрации символов из «необработанных» строковых данных, полученных сервером? Спасибо

Комментарии:

1. Нет, вам нужно urlencode получить данные, прежде чем помещать их в строку get URL.

2. Это обрабатывается веб-сервером, а не PHP.

3. Если это форма использования method="POST" , которая будет кодировать данные для вас.

4. @AbraCadaver проблема в том, что у меня нет доступа к приложению, которое отправляет данные. Я не могу закодировать строку до отправки данных.

5. Тогда вы ничего не можете сделать (кроме поиска или написания собственного расширения для веб-сервера). Определенные символы имеют особое значение в URL-адресе и должны быть закодированы перед отправкой на веб-сервер. т. Е. Все, что после # является «фрагментом» и используется только браузером, а не отправляется на веб-сервер, поэтому Doeamp;email=test@gmail.com никогда не будет доступно.