addslashes и stripslashes
Вещи очевидные, и упоминать, вроде бы, об этом не стоит - но уже который раз встречаю упорное непонимание этого вопроса отдельными товарищами; более того, "делать неправильно" советует всем известная "красная книга". С цитаты из нее и начнем (извиняйте, что на игнлише, русского варианта не имею). Честно говоря, было неприятно увидеть в, вроде бы, неплохо неписанной книге такие глупости.
Formatting Strings for Storage: AddSlashes() and StripSlashes()
[...]
Certain characters are perfectly valid as part of a string but can cause problems, particularly when inserting data into a database because the database could interpret these characters as control characters.The problematic ones are quotes (single and double), backslashes (\), and the NUL character.
We need to find a way of marking or escaping these characters so that databases such as MySQL can understand that we meant a literal special character rather than a control sequence.To escape these characters, add a backslash in front of them.
[...]
PHP provides two functions specifically designed for escaping characters. Before you write any strings into a database, you should reformat them with AddSlashes(), for example:
$feedback = AddSlashes($feedback);
Like many of the other string functions, AddSlashes() takes a string as parameter and returns the reformatted string.
When you use AddSlashes(), the string will be stored in the database with the slashes in it. (выделил fixxxer). When you retrieve the string, you will need to remember to take the slashes out. You can do this using the StripSlashes() function:
$feedback = StripSlashes($feedback);
Возможно, с легкой руки авторов этой книги, а возможно, из-за псевдологичеости этих операций (добавил слэши-убрал слэши), такой подход часто можно встретить. И, причем, этот подход, в принципе, работает (при поиске слэши тоже добавляются дважды...) До поры до времени - пока не изменится настройка magic quotes, или не осуществится переезд на другой сервер.
Думаю, подробное разъяснение неправильности такого подхода нужно вынести в faq. Крупными буквами.
Как надо делать правильно, там уже указано.
Вещи очевидные, и упоминать, вроде бы, об этом не стоит - но уже который раз встречаю упорное непонимание этого вопроса отдельными товарищами; более того, "делать неправильно" советует всем известная "красная книга". С цитаты из нее и начнем (извиняйте, что на игнлише, русского варианта не имею). Честно говоря, было неприятно увидеть в, вроде бы, неплохо неписанной книге такие глупости.
Formatting Strings for Storage: AddSlashes() and StripSlashes()
[...]
Certain characters are perfectly valid as part of a string but can cause problems, particularly when inserting data into a database because the database could interpret these characters as control characters.The problematic ones are quotes (single and double), backslashes (\), and the NUL character.
We need to find a way of marking or escaping these characters so that databases such as MySQL can understand that we meant a literal special character rather than a control sequence.To escape these characters, add a backslash in front of them.
[...]
PHP provides two functions specifically designed for escaping characters. Before you write any strings into a database, you should reformat them with AddSlashes(), for example:
$feedback = AddSlashes($feedback);
Like many of the other string functions, AddSlashes() takes a string as parameter and returns the reformatted string.
When you use AddSlashes(), the string will be stored in the database with the slashes in it. (выделил fixxxer). When you retrieve the string, you will need to remember to take the slashes out. You can do this using the StripSlashes() function:
$feedback = StripSlashes($feedback);
Возможно, с легкой руки авторов этой книги, а возможно, из-за псевдологичеости этих операций (добавил слэши-убрал слэши), такой подход часто можно встретить. И, причем, этот подход, в принципе, работает (при поиске слэши тоже добавляются дважды...) До поры до времени - пока не изменится настройка magic quotes, или не осуществится переезд на другой сервер.
Думаю, подробное разъяснение неправильности такого подхода нужно вынести в faq. Крупными буквами.
Как надо делать правильно, там уже указано.