magic quotes
Задавал я недавно нескольким девелам простой, казалось бы, вопрос. Но на него не отвечали.
А вопрос такой: "Вот допустим, получили мы данные из формы, сразу же натравили на них addslashes(), отправили все это дело... не в БД, а на экран. И мы видим, что addslashes() применился дважды. Но смотрим в код - единожды. Почему такое случилось?"
А случится такое могло из-за того, что не проверили перед тем, как применять addslashes, установлены ли magic_quotes.
"Магические кавычки" - это, казалось бы, очень полезная вещь. Вы получаете данные из формы - и они уже с добавленными бэкслешами. Чего ж тут думать, берем и вносим их сразу в БД, подумали бы некоторые. И через пару дней работы такого сайта получим SQL-Injection или ошибки при выводе данных.
И вот зная это, надо было проверить, включены ли "магические кавычки", и только после этого применять addslashes(). Кслову, я бы предпочел использовать mysql_real_escape_string() вместо кавычек.
Ну вот и ответ на вопрос. А для более любопытных - http://www.webmasterstop.com/63.html.
PS: а в PHP6 "магических кавычек" не будет. Все данные, как им и полагается, будут попадать в скрипт такими, какими их ввели. И по-моему это заставляет задуматься о фильтрации данных своими силами, что есть правильно.