ПОЛУЧИТЬ переменные с пробелами - они работают, но это правильно или хорошо? - PullRequest
15 голосов
/ 11 апреля 2011

У меня есть страница PHP, где я передаю название города через переменную URL / GET "city".В настоящее время он передает фактическое название города, даже если в нем есть пробелы (например, .php?city=New York).Затем я беру переменную $ city GET и запускаю MySQL-запрос к городам,Я более чем способен либо заменить пробелы с подчеркиванием, либо удалить их, и вставить их обратно для запроса ... и т.д.просто мое суеверие говорит мне иначе.

Ответы [ 3 ]

22 голосов
/ 11 апреля 2011

Пробелы в порядке, и обычно кодируются с помощью +.

. Для большей безопасности используйте urlencode() для ваших значений, если вручную добавляете их в параметры GET.

echo urlencode('New York'); // New+York

CodePad .

В противном случае, если ваша форма отправляется в виде параметров GET, просто оставьте их такими, как они есть:)

Затем я беру $ cityПолучите переменную и выполните MySQL-запрос к городам.name.

Убедитесь, что вы используете подходящий механизм экранирования базы данных, чтобы обезопасить себя от внедрения SQL.

2 голосов
/ 25 ноября 2017

Это прекрасно работает без использования encodeURI () или encodeURIComponent () для параметров с пробелами от Javascript до Php или Python.

echo shell_exec("python test.py \"".$_POST['ytitle']."\" \"".$_POST['yurl']."\"");

Спасибо за примечание от https://stackoverflow.com/users/8712097/tom-aranda Вот безопасный код.

system(escapeshellcmd("python GreaseMonkey_Php_Youtube_srt_generator.py ".$_POST['yurl']));
1 голос
/ 11 апреля 2011

Пробел в URL - это хорошо.Одна вещь, которую вы должны принять к сведению, это всякий раз, когда вы работаете с переменной, взятой вне вашего контроля (переменная URL, файлы cookie и т. Д. И т. Д.).Не забывайте очищать его, чтобы предотвратить внедрение SQL, XSS и другие вредоносные атаки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...