У меня есть страница PHP, где я передаю название города через переменную URL / GET города. В настоящее время оно передает фактическое название города, даже если оно имеет пробелы (например, .php?city=New York
). Затем я беру переменную GET $ city и запускаю запрос MySQL в адрес city.name.
Это работает очень хорошо – но у меня всегда было впечатление, что любые переменные, URL / GET или иначе никогда не должны иметь пробелов. Я более чем способен либо заменять пробелы w / подчеркиваниями, либо удалять их, и возвращать их обратно для запроса … и т. Д. – но я думал, что сначала попрошу, чтобы пробелы были полностью прекрасными, и это было просто мое суеверие говорит мне иначе.
Пространства в порядке и обычно кодируются символом +
.
Чтобы быть более безопасным, используйте urlencode()
для своих значений, если вручную добавить их к вашим параметрам GET.
echo urlencode('New York'); // New+York
CodePad .
В противном случае, если ваша форма, если вы представляете параметры GET, просто оставите их такими, какие они есть 🙂
Затем я беру переменную GET $ city и запускаю запрос MySQL в адрес city.name.
Убедитесь, что вы используете подходящий механизм экранирования базы данных, чтобы быть в безопасности от SQL-инъекции.
Пространство в URL-адресе отлично. Следует обратить внимание на то, когда вы работаете с переменной, взятой извне вашего контроля (переменная URL, Cookies и т. Д. И т. Д.). Всегда помните, чтобы очистить его, чтобы предотвратить инъекцию sql, XSS и другие вредоносные атаки.
Это отлично работает без использования 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']));