Помогите с кодом пожалуйста

(Ответов: 25, Просмотров: 1599)
Страница 3 из 3 Первая 123
  1. [web-developer] Аватар для cOAPerator
    • Регистрация: 22.02.2011
    • Сообщений: 615
    • Репутация: 111
    • Webmoney BL: ?
    glaberzu, не пойму вот этого?
    Цитата Сообщение от glaberzu Посмотреть сообщение
    Если вы уже сделали mysql_real_escape_string() как советовал человек - то в вышенаписанном рецепте необходимости нет.
    mysql_real_escape_string функция ведь для экранирования в запросе, но данные в базу то заносятся исходными - без экранирования...

    Функция addslashes() часто применяется при записи в базу данных. Заметьте, что сам символ \ в базу данных записан не будет, он используется только для корректной передачи данных в базу. аналогично и mysql_real_escape_string
    соответственно stripslashes надо обязательно использовать... или нет?
    Последний раз редактировалось cOAPerator; 26.12.2011 в 15:04.
    • 0
  2. Новичок Аватар для glaberzu
    • Регистрация: 26.12.2011
    • Сообщений: 24
    • Репутация: 1
    • Webmoney BL: ?
    Цитата Сообщение от cOAPerator Посмотреть сообщение
    mysql_real_escape_string функция ведь для экранирования в запросе, но данные в базу то заносятся исходными - без экранирования...
    В базу заносится как раз с экранированием, которое mysql_real_escape_string экранирует все спецсимволы, включая кавычки. =) addslashes() экранирует исключительно кавычки, без спецсимволов.

    А вот stripslashes() действительно лучше использовать всегда - потому что экранировать запрос на стороне сервера внутренними средставми php - не проблема (mgc - это экранирование на уровне apache), а поведение magic quotes неадекватно и при записи может вызвать много проблем.

    Если на него полагаться, например, и не экранировать запросы - то при переносе на другой хост, где mgc отключено, вы получите фатальные ошибки.

    В общем, результируя (это только для примера!):

    <?php
    // избавляемся от mgc, если включено
    foreach($_POST as $k=>$v) $_POST[$k] = stripslashes($v);

    // при записи
    $_POST['nick'] = addslashes($_POST['nick']);
    Последний раз редактировалось glaberzu; 26.12.2011 в 15:28.
    • 0
  3. [web-developer] Аватар для cOAPerator
    • Регистрация: 22.02.2011
    • Сообщений: 615
    • Репутация: 111
    • Webmoney BL: ?
    Как такое может быть?
    вот это:
    Цитата Сообщение от cOAPerator Посмотреть сообщение
    Функция addslashes() часто применяется при записи в базу данных. Заметьте, что сам символ \ в базу данных записан не будет, он используется только для корректной передачи данных в базу. аналогично и mysql_real_escape_string
    взято с сайта php.net

    а вы говорите:
    Цитата Сообщение от glaberzu Посмотреть сообщение
    В базу заносится как раз с экранированием
    может я чего то недопонимаю?
    Последний раз редактировалось cOAPerator; 26.12.2011 в 15:36.
    • 0
  4. Новичок Аватар для glaberzu
    • Регистрация: 26.12.2011
    • Сообщений: 24
    • Репутация: 1
    • Webmoney BL: ?
    Раз написано значит так и есть - извините голова уже не варит. Что бы голова не болела каждый раз о magic quotes gpc - можно использовать такой участок из моих скриптов. Устраняет лишнее экранирование только если magic quotes gpc включены.

    if(get_magic_quotes_gpc())
    {
    foreach($_POST as $k=>$v)
    {
    $_POST[$k] = stripslashes($v);
    }
    }
    • 0
  5. [web-developer] Аватар для cOAPerator
    • Регистрация: 22.02.2011
    • Сообщений: 615
    • Репутация: 111
    • Webmoney BL: ?
    glaberzu,
    Директиву magic_quotes_gpc можно отключить только на системном уровне и нельзя во время выполениня.
    вот источник так что это врят-ли поможет исходя из документации по php. или по краней мере это неэффектино как написано в той же документации.
    Последний раз редактировалось cOAPerator; 27.12.2011 в 06:07.
    • 0
  6. Новичок Аватар для glaberzu
    • Регистрация: 26.12.2011
    • Сообщений: 24
    • Репутация: 1
    • Webmoney BL: ?
    Цитата Сообщение от cOAPerator Посмотреть сообщение
    вот источник так что это врят-ли поможет исходя из документации по php. или по краней мере это неэффектино как написано в той же документации.
    Да при чем тут документация, я вам не предлагаю отключить magic quotes, вы что не видите - это пре-обработка POST массива в самом скрипте =) Вобщем-то руководствуйтесь документацией - только не трактуйте ее неправильно.

    "Нельзя отключить", например, не тождественно "невозможно обойти".
    • 0
Страница 3 из 3 Первая 123

Похожие темы

Темы Раздел Ответов Последний пост
Помогите пожалуйста :( экзамен
Оффтоп и свободные темы 0 16.06.2011 11:52
Помогите пожалуйста с версткой
Web программирование 1 27.04.2011 18:03
Помогите по верстке пожалуйста!
Web программирование 1 30.01.2011 14:49
Помогите с кодом, выровнять футер в wp
Web программирование 2 02.12.2010 00:47

У кого попросить инвайт?

Вы можете попросить инвайт у любого модератора:

Информеры