Я прав, чтобы отфильтровать html-символы так:
$user = $_POST["user"]; //Get username from <form> mysql_real_escape_string($user); //Against SQL injection strip_tags($user); //Filter html characters out
Но почему-то это не фильтрует html-символы. Я не знаю, почему, может ли это mysql_real_escape_string
?
… Но, вы имеете в виду:
$user = $_POST["user"]; // Get username from <form> $user = mysql_real_escape_string($user); // Against SQL injection $user = strip_tags($user); // Filter html characters out
?
Как сказано в других ответах (ссылаясь на strip_tags()
, но это одинаково для mysql_real_escape_string()
), эти функции не изменяют строки напрямую, а возвращают измененную копию . Таким образом, вы должны назначить возвращаемые значения одной и той же (или другой) переменной!
strip_tags($user); //Filter html characters out
следует заменить следующим:
$user = strip_tags($user); //Filter html characters out
strip_tags
возвращает strip_tags
значение
См. Doc: http://nl2.php.net/strip_tags
mysql_real_escape_string()
же самое происходит с mysql_real_escape_string()
$user = mysql_real_escape_string($user); //Against SQL injection
Вы используете strip_tags
неправильно:
string strip_tags (строка $ str [, строка $ allowable_tags])
Модификация кода для присвоения ему возвращаемого значения должна исправить его
$user = strip_tags($user); //Filter html characters out
РЕДАКТИРОВАТЬ
Просто для полноты, спасибо за lorenzo-s за указание на это, вам также нужно сделать то же самое с mysql_real_escape_string
$user = mysql_real_escape_string($user); // Against SQL injection
Как уже говорилось
$user = strip_tags($user);
следует использовать, но я также
mysql_real_escape_string($user);
ПОСЛЕ вызова strip_tags ();