[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Универсальная функция для обработки данных
UES.CoB_frv
Здравствуйте, уважаемые программеры. Я сегодня первый день на этом форуме, и это - мое первое сообщение.

У меня такой вопрос, может ли кто нибудь привести пример функции, которая принимает в качестве параметра строку и обрабатывает должным образом? Необходима работа как с включенными кавычками, так и с выключенными. Основная цель - подготовить данные к сохранению в БД.

Также, прошу объяснить принципиальные отличия и преимущества таких функций, как
mysql_real_escape_string()
и
mysql_escape_string()
относительно
addslashes()


Заранее благодарю, UES.CoB_frv. biggrin.gif



Спустя 13 минут, 3 секунды (7.08.2010 - 14:06) Lenarfate написал(а):
http://phpforum.ru/index.php?showtopic=19168&hl=

посмотри, там есть интересные решения smile.gif

Спустя 47 секунд (7.08.2010 - 14:07) Lenarfate написал(а):
mysql_escape_string() вроде больше не поддерживается (считается устаревшей)

Спустя 18 минут, 34 секунды (7.08.2010 - 14:25) UES.CoB_frv написал(а):
спасибо, буду читать )). Для внесения в БД необходимо экранировать только ' и " ? (что наверное и делает mysql_real_escape_string()). В материале, на который Вы дали ссылку, используется такая конструкция:
mysql_real_escape_string(addslashes())
А при проверке на get_magic_quotes_gpc() просто удаляются слэши, с помощью stripslashes(). Это универсально? dry.gif

Спустя 15 минут, 21 секунда (7.08.2010 - 14:41) Slays написал(а):
помимо кавычек не забывай про htmlspecialchars

у меня есть универсальная функция, но здесь показать не могу, т.к. при ее написании используются html-эквиваленты, которые при создании на форуме поста заменяются на теги, что теряет весь смысл функции...

Спустя 5 минут, 17 секунд (7.08.2010 - 14:46) UES.CoB_frv написал(а):
разве функция htmlspecialchars не используется только на выводе? как нужно ее еще использовать?

Спустя 9 минут, 32 секунды (7.08.2010 - 14:56) Michael написал(а):
Цитата (UES.CoB_frv @ 7.08.2010 - 13:46)
разве функция htmlspecialchars не используется только на выводе? как нужно ее еще использовать?

так и есть

Спустя 3 минуты, 44 секунды (7.08.2010 - 14:59) Michael написал(а):
Так избавляемся от магических кавычек:
function fix_gpc_magic() {  
if (ini_get('magic_quotes_gpc')) {
array_walk($_GET, '_fix_gpc_magic');
array_walk($_POST, '_fix_gpc_magic');
array_walk($_COOKIE, '_fix_gpc_magic');
}
}


function _fix_gpc_magic(&$item) {
if (is_array($item)) {
array_walk($item, '_fix_gpc_magic');
}
else {
$item = stripslashes($item);
}
}


fix_gpc_magic(); // вызовем где то в начале



Спустя 20 минут, 22 секунды (7.08.2010 - 15:20) UES.CoB_frv написал(а):
Большое спасибо, Michael, только что ознакомился с мануалом функции array_walk.. мда, полезная функция)). Вот только не пойму:
Цитата
function _fix_gpc_magic(&$item) {

"&$" - что означает? тоесть как с параметром, так и без?

Спустя 2 минуты, 58 секунд (7.08.2010 - 15:23) Slays написал(а):
UES.CoB_frv она используется чтобы заменить спец символы на их эквиваленты, зачем в базе хранить теги и прочее, если можно их всех заменить при добавлении, а при выводе не опасаться что забыл htmlspecialchars указать. Какая разница.

Спустя 1 минута, 28 секунд (7.08.2010 - 15:24) Michael написал(а):
Цитата
"&$" - что означает?

по ссылке передаем переменную в функцию, чтобы изменения внутри функции произошли над внешними переменными, а не над копиями (без &)( что бессмысленно).

Спустя 5 минут, 44 секунды (7.08.2010 - 15:30) Michael написал(а):
Slays, плохое советуешь. Не надо искажать данные. Символ < имеет законное право жить в ячейке таблицы.
А о безопасности вывода надо думать всегда. Вот почитай, от twina

Спустя 3 минуты, 59 секунд (7.08.2010 - 15:34) UES.CoB_frv написал(а):
Michael, теперь все, вроде бы, понятно. Спасибо. Но насчет экранирования, можно просто использовать mysql_real_escape_string() при добавлении в базу? это спасет от ' и " ?

Спустя 1 минута, 14 секунд (7.08.2010 - 15:35) Slays написал(а):
Michael приведи пример, в чем такой метод плох, зачем хранить в БД теги и тд. Только жизненный, а не надуманный под ситуацию.

Спустя 38 минут, 40 секунд (7.08.2010 - 16:14) Michael написал(а):
Цитата (UES.CoB_frv @ 7.08.2010 - 14:34)
Michael, теперь все, вроде бы, понятно. Спасибо. Но насчет экранирования, можно просто использовать mysql_real_escape_string() при добавлении в базу? это спасет от ' и " ?

да. И почитай ту ссылку, что постом выше - про безопасность - там как раз и про mysql_real_escape_string

Спустя 7 минут, 26 секунд (7.08.2010 - 16:21) Michael написал(а):
Цитата (Slays @ 7.08.2010 - 14:35)
Michael приведи пример, в чем такой метод плох, зачем хранить в БД теги и тд. Только жизненный, а не надуманный под ситуацию.

Чтобы не возникало таких вопросов специально на этом форуме для новичков и не только подготовлена задачка, которую уже упоминали выше:

Цитата (Lenarfate)
http://phpforum.ru/index.php?showtopic=19168&hl=
посмотри, там есть интересные решения


Реши ее по своему - как раз и посмотрим, чем хорош твой метод.

p.s. Я ее в свое время тоже решал.

Спустя 20 минут, 26 секунд (7.08.2010 - 16:42) Slays написал(а):
хорошо, пересмотрю свой подход user posted image

Спустя 3 минуты, 6 секунд (7.08.2010 - 16:45) UES.CoB_frv написал(а):
Ок, спасибо! (нет 10 постов для благодарности) huh.gif

Спустя 1 минута, 35 секунд (7.08.2010 - 16:46) Michael написал(а):
ну спроси что то еще smile.gif .


Спустя 42 минуты, 1 секунда (7.08.2010 - 17:28) UES.CoB_frv написал(а):
Вопросы еще будут cool.gif.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.