Функция для дезинфекции входных значений PHP

Я использую это:

function safeClean($n) { $n = trim($n); if(get_magic_quotes_gpc()) { $n = stripslashes($n); } $n = mysql_escape_string($n); $n = htmlentities($n); return $n; } 

Чтобы предотвратить любые инъекции MySQL или что-то в этом роде. Всякий раз, когда я использую его для обтекания $ _POST,

 $username = safeClean($_POST['user']); $password = md5(safeClean($_POST['password'])); $vpassword = md5(safeClean($_POST['verify'])); $email = safeClean($_POST['email']); 

Он даже не работает, но я подключил функции functions.php, и каталог верен, но не работает вообще, потому что он просто показывает пустую страницу … Если я удалю safeClean () из каждого $ _POST, это сработает.

Почему это не работает вообще?

Related of "Функция для дезинфекции входных значений PHP"

Попробуйте использовать mysql_real_escape_string() а не mysql_escape_string() .

На мой взгляд, такой общий подход к санированию – это не лучший способ думать о вещах. С одной стороны, параметризованные запросы (возможно, наиболее удобные с использованием PDO) – гораздо лучший способ подойти к проблеме безопасности SQL. Но в общем

Я знаю, что побуждение разработчика состоит в том, чтобы попытаться уменьшить количество вещей, о которых вы должны думать. Поэтому, естественно, вы хотите увидеть, можете ли вы придумать универсальную функцию санитизации, которую вы можете просто передать всем входам и не беспокоиться больше. Входы – это одна арена, хотя, если вам действительно нужна безопасность, вам нужно подумать конкретно о том, что каждая входящая часть данных должна быть и где она будет в конечном итоге. Если вы отправитесь на автопилот, вы в какой-то момент внесите проблему с безопасностью.

Почти все в коде неправильное.

get_magic_quotes_gpc неуместен, htmlentities неуместен, и даже термин «дезинфекция» используется неправильно.

На самом деле, вы не должны дезинформировать что-либо для базы данных. Но просто следуйте правилам синтаксиса.
Взгляните на очень похожий вопрос, я очень хорошо объяснил SQL-вопросы: на PHP при отправке строк в базу данных следует позаботиться о незаконных символах с помощью htmlspecialchars () или использовать регулярное выражение?

А на пустой странице вы должны изучить праймер отладки. Вы должны включить отчет об ошибках, чтобы видеть сообщения об ошибках вместо пустой страницы. Для начала вы можете обратиться к этой статье: Ссылка для запуска: http://www.ibm.com/developerworks/library/os-debug/

вы можете начать с добавления этих строк вверху вашего крипта

 ini_set('display_errors',1); error_reporting(E_ALL); 

и этот код для выполнения запроса:

 $result = mysql_query($query); if (!$result) trigger_error(mysql_error());