Я прав, чтобы отфильтровать 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 ();