Хранение кавычек в БД

Тема в разделе "PHP программирование", создана пользователем typak, 11 апр 2011.

  1. typak

    typak Гость

    Вообщем тут проблема с кавычками нипонятно как их правильно обрабатывать.
    Стоит у меня в текстовой области такая проверка:
    Код (PHP):
    if(!get_magic_quotes_gpc())
    {
    $output = str_replace('\r\n', "\r\n", $this->value)//шо утета строка делает фиг его знает зачем теже симвоы заменять темиже ?
    }
    else $output = $this->value;
    вообщем $this->value - это значение которое подставляется потом между <textarea>$this->value</textarea>
    Это проверка при извечении и БД и подстановки в форму для редактирования

    А при добавлении в БД идет такая проверка
    Код (PHP):
    //Обеспечение безопасности текста перед внесением в БД
    if(!get_magic_quotec_gpc())
    {
    $this->value = mysql_escape_string($this->value);
    }
    так от непонятно в каком виде у меня попадают кавычки в БД ?
    \' \" Экранированные штоли ?
    А вообще в каком виде их правильно хранить, а то они у меня и выводятся в таком виде на экран \"
    хирня полная
    А может их надо в html-сущностях хранить ? или всетаки в базе данных нужно их сохранять в реальном виде в таком в каком они и есть тока при выводе на экран и.т.д. уже изменять. Всётаки как правильно делать
    Головняк полный
     
  2. vital

    vital Больной Компом Детектед
    Команда форума Web Team

    Регистрация:
    29 янв 2006
    Сообщения:
    2.474
    Симпатии:
    27
    А нефиг по попову учиться же.
    1. mysql_escape_string. Устаревшая функция, вместо нее юзайте mysql_real_escape_string()
    2
    Код (PHP):
    if(!get_magic_quotes_gpc())
    {
    $output = str_replace('\r\n', "\r\n", $this->value)//шо утета строка делает фиг его знает зачем теже симвоы заменять темиже ?
    }
    Cтереть нафиг. :)
    3. см пункт 1 и все вопрсоы отпадут.
    4. Последнее, перед выводом на экран так еще echo htmlspecialchars($this->value);

    Статья из которой вы взяли пример - годов 2х тысячных что ли?
    Код (PHP):
    if(!get_magic_quotec_gpc())
    {
    Используйте пхп 5.2\5.3 и Забудьте про это. ПРосто забудьте.
     
  3. typak

    typak Гость

    Та нет это softtimeFramwork class.textarea тупо создаеш обьект инициализируеш члены класса, а он сам уже делает проверку
    если вставляеш значения в форму одну проверку

    if(!get_magic_quotes_gpc())
    {
    $output = str_replace('\r\n', "\r\n", $this->value)//шо утета строка делает фиг его знает зачем теже симвоы заменять темиже ?
    }
    else $output = $this->value;


    тока фиг его знает шо эта страка делает $output = str_replace('\r\n', "\r\n", $this->value) чотаж она там записана была навернож не просто так как никак Кузнецов и Семдянов професионалы.

    Да вообщем, а када уже эти данные отправляеш (после редактирования или када новые вводиш, то делает такую проверку

    if(!get_magic_quotec_gpc())
    {
    $this->value = mysql_escape_string($this->value);
    }


    Здесь понятно без экранирования в БД кавычки непопадут . Уже такую строку не передаш """ лвыао" алдвыфо" Будет ошибка не наверно такую с одинарными кавычками ' dsf'fdsa'' '

    Так онаж сильно не отличается. Тоже самое делает что и mysql_escape_string

    Я тут покапашился в коде так от шо я думаю:
    1. Даные в БД Хранятся в таком виде в котором мы их и записываем. Мы просто извлекаем их по разному ничо их не нужно переделывать ни в какие там html-сущности. Так как есть так и сохраняем.
    2.Обязательно экранировать. Ну это ни как правило, а как необходимость потомучто кусок кода или текста с кавычками уже не закинеш в бд.
    3.Это делать такую проверку: кароче обрабатывать функцией stripslashes если включон режим магических кавычек. Да и не тока чота у меня такая фигня Допустим строка запроса с режимом кавычек " \' kdsfjl \' \' \" ". Вопрос шо запишется в БД? Кто знает
    у меня походу чота так и записывается \' kdsfjl \' \' \" отакая фигня вроде как хотя далжно б записать БД ж понимает такой символ \' как ' , а такой как \" отакай и дожно по правильному такое записать ' kdsfjl ' ' " , а у меня нето вроде выходи со слешами пишит или я туплю ? Кароче приходится применять stripslaches обязательно неважно включон magic_quotes или нет. Херня какаето шо попало. Или всё так и должно быть ? шото я сомневаюсь

    Вообщем такая у меня проверка стоит:
    Код (PHP):
    if(!get_magic_quotes_gpc())//если не включон режим магических кавычек, то
    {
    $output = $this->value; //str_replace('\r\n',"\r\n",$this->value);//заменяем переводы строк на переводы строк
    }
    else $output = $this->value;//а если включен режим магических кавычек, то формируем тег

    $output = stripslashes($output);//убираем слеши при извлечении из БД влюбом случае хоть при кавычках хоть без
    Терь всё как надо работае можна записывать:
    и так ' ' ' ' ' '
    и так " " " " "
    и даже так \' \' \" \"
    тока структуры никакой нету шо попало наделано я в ужасе :)
     
  4. typak

    typak Гость

    Та нет это softtimeFramwork class.textarea тупо создаеш обьект инициализируеш члены класса, а он сам уже делает проверку
    если вставляеш значения в форму одну проверку

    if(!get_magic_quotes_gpc())
    {
    $output = str_replace('\r\n', "\r\n", $this->value)//шо утета строка делает фиг его знает зачем теже симвоы заменять темиже ?
    }
    else $output = $this->value;


    тока фиг его знает шо эта страка делает $output = str_replace('\r\n', "\r\n", $this->value) чотаж она там записана была навернож не просто так как никак Кузнецов и Семдянов професионалы.

    Да вообщем, а када уже эти данные отправляеш (после редактирования или када новые вводиш, то делает такую проверку

    if(!get_magic_quotec_gpc())
    {
    $this->value = mysql_escape_string($this->value);
    }


    Здесь понятно без экранирования в БД кавычки непопадут . Уже такую строку не передаш """ лвыао" алдвыфо" Будет ошибка не наверно такую с одинарными кавычками ' dsf'fdsa'' '

    Так онаж сильно не отличается. Тоже самое делает что и mysql_escape_string

    Я тут покапашился в коде так от шо я думаю:
    1. Даные в БД Хранятся в таком виде в котором мы их и записываем. Мы просто извлекаем их по разному ничо их не нужно переделывать ни в какие там html-сущности. Так как есть так и сохраняем.
    2.Обязательно экранировать. Ну это ни как правило, а как необходимость потомучто кусок кода или текста с кавычками уже не закинеш в бд.
    3.Это делать такую проверку: кароче обрабатывать функцией stripslashes если включон режим магических кавычек. Да и не тока чота у меня такая фигня Допустим строка запроса с режимом кавычек " \' kdsfjl \' \' \" ". Вопрос шо запишется в БД? Кто знает
    у меня походу чота так и записывается \' kdsfjl \' \' \" отакая фигня вроде как хотя далжно б записать БД ж понимает такой символ \' как ' , а такой как \" отакай и дожно по правильному такое записать ' kdsfjl ' ' " , а у меня нето вроде выходи со слешами пишит или я туплю ? Кароче приходится применять stripslaches обязательно неважно включон magic_quotes или нет. Херня какаето шо попало. Или всё так и должно быть ? шото я сомневаюсь

    Вообщем такая у меня проверка стоит:
    Код (PHP):
    if(!get_magic_quotes_gpc())//если не включон режим магических кавычек, то
    {
    $output = $this->value; //str_replace('\r\n',"\r\n",$this->value);//заменяем переводы строк на переводы строк
    }
    else $output = $this->value;//а если включен режим магических кавычек, то формируем тег

    $output = stripslashes($output);//убираем слеши при извлечении из БД влюбом случае хоть при кавычках хоть без
    Терь всё как надо работае можна записывать:
    и так ' ' ' ' ' '
    и так " " " " "
    и даже так \' \' \" \"
    тока структуры никакой нету шо попало наделано я в ужасе :facepalm:



    Добавлено:
    Та нет это softtimeFramwork class.textarea тупо создаеш обьект инициализируеш члены класса, а он сам уже делает проверку
    если вставляеш значения в форму одну проверку

    if(!get_magic_quotes_gpc())
    {
    $output = str_replace('\r\n', "\r\n", $this->value)//шо утета строка делает фиг его знает зачем теже симвоы заменять темиже ?
    }
    else $output = $this->value;


    тока фиг его знает шо эта страка делает $output = str_replace('\r\n', "\r\n", $this->value) чотаж она там записана была навернож не просто так как никак Кузнецов и Семдянов професионалы.

    Да вообщем, а када уже эти данные отправляеш (после редактирования или када новые вводиш, то делает такую проверку

    if(!get_magic_quotec_gpc())
    {
    $this->value = mysql_escape_string($this->value);
    }


    Здесь понятно без экранирования в БД кавычки непопадут . Уже такую строку не передаш """ лвыао" алдвыфо" Будет ошибка не наверно такую с одинарными кавычками ' dsf'fdsa'' '

    Так онаж сильно не отличается. Тоже самое делает что и mysql_escape_string

    Я тут покапашился в коде так от шо я думаю:
    1. Даные в БД Хранятся в таком виде в котором мы их и записываем. Мы просто извлекаем их по разному ничо их не нужно переделывать ни в какие там html-сущности. Так как есть так и сохраняем.
    2.Обязательно экранировать. Ну это ни как правило, а как необходимость потомучто кусок кода или текста с кавычками уже не закинеш в бд.
    3.Это делать такую проверку: кароче обрабатывать функцией stripslashes если включон режим магических кавычек. Да и не тока чота у меня такая фигня Допустим строка запроса с режимом кавычек " \' kdsfjl \' \' \" ". Вопрос шо запишется в БД? Кто знает
    у меня походу чота так и записывается \' kdsfjl \' \' \" отакая фигня вроде как хотя далжно б записать БД ж понимает такой символ \' как ' , а такой как \" отакай и дожно по правильному такое записать ' kdsfjl ' ' " , а у меня нето вроде выходи со слешами пишит или я туплю ? Кароче приходится применять stripslaches обязательно неважно включон magic_quotes или нет. Херня какаето шо попало. Или всё так и должно быть ? шото я сомневаюсь

    Вообщем такая у меня проверка стоит:
    Код (PHP):
    if(!get_magic_quotes_gpc())//если не включон режим магических кавычек, то
    {
    $output = $this->value; //str_replace('\r\n',"\r\n",$this->value);//заменяем переводы строк на переводы строк
    }
    else $output = $this->value;//а если включен режим магических кавычек, то формируем тег

    $output = stripslashes($output);//убираем слеши при извлечении из БД влюбом случае хоть при кавычках хоть без
    Терь всё как надо работае можна записывать:
    и так ' ' ' ' ' '
    и так " " " " "
    и даже так \' \' \" \"
    тока структуры никакой нету шо попало наделано я в ужасе :facepalm:



    Добавлено: Чота у меня браузер подвис 4 сообщения отправил ))) :)

    Добавлено: даже сообщение нормально отправить невышло ))) :rolleyes:

    невезет так невезет чорная полоса наверно
     
  5. vital

    vital Больной Компом Детектед
    Команда форума Web Team

    Регистрация:
    29 янв 2006
    Сообщения:
    2.474
    Симпатии:
    27
    Еще раз про года.
    Забудьте про кавычки. Забудьте, эту древность пережили давно. Скоро ее выпилят вообще.

    $output = str_replace('\r\n', "\r\n", $this->value) Заменит в строке '\r\n' на символы переноса строки и перевода каретки. Не вижу никакой практической ценности. Вряд ли кто-либо вместо ентера пишет \r\n в надежде на то, что скрипт потом вставит перенос.
    Да, кстати. Софттайм знаменит своим былокодом.
    А про фреймворки- учите нормальный, в духе Yiiframework.ru
    А это говно просто забудьте.

    Добавлено:
    Разницу можете загуглить. Не спорте со мной. Просто примите как аксиому.
     
  6. typak

    typak Гость

    за 2009 год книга
    Да я soffttimeframwork знаю от и до там то и учить нечего было 30 классов гдето буквально за две недели осилил,
    а на изучение другого уйдет минимум месяца 2. Мне просто softtime нравится из за своей простоты + его можно самому расширить: дабавить свои классы, зделать из существующих под себя дополнительные классы, ну вообщем очень легкий и можно хорошо над ним поизвращатся.

    А изучать какой то другой канечно буду тока нещас щас некада sape покоя недает. Там вроде CodeInteger хороший фреймворк говорят фиг его знает. Да и подводные камни: начну его изучать, а там литературы нормальной на русском может и небыть, код может быть как попало закоментированный или даже вообще незакоментированный. Ну вообщем можно сильно много времени потерять, да и нервы попортить.

    Да я вообще пака перед собой задачи небольшие ставлю думаю короче доску обьявлений написать типа газеты рекламной в каждом городе. Такой небольшой сервис. Так уже прикинул для этого больше чем достаточно и softtima темболее я с ним уже знакомм.

    softtimeFramework - лутше чем писать структурный код !!!!!

    Да загуглил поменял кароче на real да устарела, А где смотреть устарела функция или нет
     
  7. vital

    vital Больной Компом Детектед
    Команда форума Web Team

    Регистрация:
    29 янв 2006
    Сообщения:
    2.474
    Симпатии:
    27
    Еще раз говорит про уровень книги, если в сравнительно новой книге, учат хрени из древности.
    Я на Yii начал писать за неделю. Он очень простой и понятный.
    Это могут все фреймворки. Yii особенно легко.
    Есть. я же дал сайт.
    Он отлично закоменнтировано.
    Что такое структурный код? Это типа процедурный? ТАк для того, что бы писать в ооп стиле, фреймворк не обязателен.
    Хороший. Но Yii лучше.имхо.
     
Загрузка...

Поделиться этой страницей