Ну, вы используете stripslashes()
, потому что magic_quotes_gpc
установлен?Так что этот код будет работать только когда magic_quotes_gpc
установлен!Я бы порекомендовал вам отключить его и не использовать вызов strislashes ().
Но обратите внимание, что нет ничего лучше, чем «универсальная очистка».Давайте назовем это просто цитированием , потому что это то, о чем все.
При цитировании вы всегда цитируете текст для некоторый конкретный вывод , например:
- строковое значение для запроса mysql
like
выражение для запроса mysql - html код
- json
- mysqlрегулярное выражение
- php регулярное выражение
Для каждого случая требуется разное цитирование, поскольку каждое использование присутствует в различном синтаксическом контексте.Это также подразумевает, что цитирование должно производиться не при вводе в PHP, а при конкретном выводе !По какой причине такие функции, как magic_quotes_gpc
, не работают (всегда гарантируйте, что он отключен !!!).
Итак, какие методы можно использовать для цитирования в этих конкретных случаях?(Не стесняйтесь поправлять меня, могут быть более современные методы, но они работают для меня)
mysql_real_escape_string($str)
mysql_real_escape_string(addcslashes($str, "%_"))
htmlspecialchars($str)
json_encode()
- только для utf8!Я использую свою функцию для iso-8859-2 mysql_real_escape_string(addcslashes($str, '^.[]$()|*+?{}'))
- вы не можете использовать preg_quote в этом случае, потому что обратный слэш будет экранирован два раза! preg_quote()