Arh
Цитата |
А мясо лучше хранить в коровах, чем в консервах? =) |
Естественно. И зря смеешся. В мертвых или живых - вопрос вторичный. А попробуй из тушенки сделать шашлык или бифштекс.
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
DedMorozzz
20.11.2014 - 15:28
Цитата (twin @ 20.11.2014 - 14:04) |
Почему недопустима фильтрация: 1. Это искажает данные. Почему за меня решают, как будет выглядеть мой текст после фильтрации? |
А кто сказал что твои данные будут видны тебе
Я использую И 1й и 2й вариант
К примеру делал так для поиска. Юзер вводит какое-то название. Я сохраняю оба варианта. И отфильтрованное и юзерское
Т.е. ввёли M`cDonalds, Mc`Donalds, McDonald`s и т.д.
Но сохраняю во всех случаях - McDonalds
И что бы что-то найти - юзерские данные не годятся. Для этого я их и фильтрую. Вырезаю все спец символы
А когда, после поиска "mcdonalds" будет произведена выборка - я вывожу уже то, что вводили юзвери. Так что да, я использую ОБА варианта. Одним тут не обойтись
Вот тебе пример пользовательских данных:
http://www.google.com/jobs/archive/britney.htmlЭто вариант Написания Бритни Спирз на англ. языке
_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
DedMorozzz
Хранить два варианта и оба в базе... Мсье знает толк в извращениях.
Цитата |
И что бы что-то найти - юзерские данные не годятся. Для этого я их и фильтрую. Вырезаю все спец символы |
Как ты найдешь <twin>? Если брички обрезаны?
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
Цитата |
Просто подмена базовых понятий предполагает дилетантство оппонента |
Я уже раз 20 написал что ничего не подменял. Это ты так зациклился.
Цитата |
С таким же успехом могу тебя обвинить в том, что ты htmlspecialchars называешь обработчиком bb кодов. |
проехали.
Цитата |
Почему за меня решают, как будет выглядеть мой текст после фильтрации? |
В первых потому что ты спамер, а политика ресурса запрещает использование каких либо ссылок.
Во вторых при чём тут это? Название темы "Фильтрация пользовательского ввода.", то есть фильтрация есть в любом случае, не важно какая, важно когда?
Цитата |
Нельзя быть совершенно уверенным, что "отфильтровано" всё, что необходимо. |
Естественно так удобней - "Запрещено всё, что не разрешено".
Но кривизна реализаций фильтров не говорит о том, что их нужно обязательно запускать после базы. Это вообще тут не причём.
Кривизна валидаций, маразмы с грёбаной розой, пьяный или полу пьяный Вася итд итп вообще не относиться к этому, да и к какому либо другому вопросу.
Цитата |
А вот и камень преткновения - изменение данных. Тот самый htmlspecialchars(). |
Наконец то по теме =)
Цитата |
Что ты будешь делать, если потребуется исходный текст? |
Сделаю htmlspecialchars_decode.
Цитата |
Если ты сейчас скажешь, что совершенно точно знаешь, что данные никогда не потребуются в исходно виде, тогда сделаем скидку на малый опыт и прекратим дискуссию. За неимением смысла. |
Да какие данные? Смотря какая задача. Кучу примеров уже привёл, настоящих.
Зачем мне понадобятся исходные данные с ссылками, js, и прочим мусором, которого тут (допустим в комментах) быть не должно? Коммент уже написан, он увековечен, его не надо даже редактировать, слово не воробей как говориться.
Цитата |
тогда сделаем скидку на малый опыт и прекратим дискуссию |
Я - новичек, без опыта, привожу кучу примеров, а вы дядя профессор ни одного. Ничего не напоминает? Из тех же срачей про ООП, где от ООПшников только и слышно "а как ты сделаешь это, а как это?", а сами примеров не приводят и только говорят "лучше делать только с ООП".
_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
DedMorozzz
20.11.2014 - 15:50
Цитата (twin @ 20.11.2014 - 14:41) |
Хранить два варианта и оба в базе... Мсье знает толк в извращениях. |
Подскажешь вариант получше?
_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
twin
Цитата |
Как ты найдешь <twin>? Если брички обрезаны? |
А зачем искать <twin> если "брички" обрезаны?
Точнее зачем писать <twin> если это будет вырезано?
А как ты найдёшь документ в котором написано
про тег <strong> ?
Не те миллион документов, где <strong> используется для оформления, а только те документы, где <strong> как <strong> то есть предназначенный не для оформления, а для
описания данного тега.
<strong>Заголовок</strong>
<code>
<strong>Жирный</strong> - пример как делать жирным
</code>
_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Arh
Цитата |
Сделаю htmlspecialchars_decode. |
А я говорил - не торопись. Попробуй проделать это с преславутым <twin>
Цитата |
А зачем искать <twin> если "брички" обрезаны? Точнее зачем писать <twin> если это будет вырезано? |
Вот именно. Ты решил за меня, что можно писать, а что нельзя. Если на ресурсе нельзя написать что то в бричках, нужно бежать с такого ресурса как можно быстрее. Я должен видеть все свое сообщение непокоцанным, а именно таким, каким вводил.
Цитата |
Зачем мне понадобятся исходные данные с ссылками, js, и прочим мусором, которого тут (допустим в комментах) быть не должно? |
Всё это должно отображаться в комментарии простым текстом. Вот почему не срабатывает скрипт. его никто же не вырезал:
<script>alert('Не трогай данные!!!')</script>
Цитата |
А как ты найдёшь документ в котором написано про тег <strong> ? Не те миллион документов, где <strong> используется для оформления, а только те документы, где <strong> как <strong> то есть предназначенный не для оформления, а для описания данного тега. |
Так и найду. Введя <strong>. Это текст, это не элемент разметки. Разметке нечего делать в базе вообще. Вот это
<strong>Заголовок</strong>
<code>
<strong>Жирный</strong> - пример как делать жирным
</code>
В базе недопустимо. Это допустимо только в HTML. Для того и придумали bb-теги, не от хорошей жизни.
Цитата |
Коммент уже написан, он увековечен, его не надо даже редактировать, слово не воробей как говориться. |
Захочет заказчик перенести эти комменты куда-нибудь в джумлу. И что ты ему скажешь?
DedMorozzz
Цитата |
Подскажешь вариант получше? |
Он не получше. Он единственный. Хранить в базе девственно чистый текст. Всё остальное от лукавого.
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
DedMorozzz
20.11.2014 - 16:23
Цитата (twin @ 20.11.2014 - 15:17) |
Он не получше. Он единственный. Хранить в базе девственно чистый текст. Всё остальное от лукавого. |
Ок. Сохранил Mc`Donalds
Как выдать юзеру Mc`Donalds, когда он в поиске ввёл McDonald`s?
_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
sergeiss
20.11.2014 - 16:26
Цитата (DedMorozzz @ 20.11.2014 - 16:23) |
Ок. Сохранил Mc`Donalds Как выдать юзеру Mc`Donalds, когда он в поиске ввёл McDonald`s? |
Это уже другой вопрос, "как организовать поиск".
Но Николай совершенно прав, что наиболее правильно - это хранить в БД текст в том виде, как он введен. Включая всякие тэги, ВВ-коды и всё остальное. Затем, только при выводе, проводить изменения. Иначе получаем гимор. Может быть не сразу, но получим его потом.
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)
DedMorozzz
20.11.2014 - 16:28
Цитата (sergeiss @ 20.11.2014 - 15:26) |
Это уже другой вопрос, "как организовать поиск". |
Нет, это не другой вопрос. Это тот же самый
Причина и следствие. Нужно сохранять и выбирать пользовательские данные. Я храню оба варианта, не из-за того, что бы набить базу. А потому что по другому просто нельзя
_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
Цитата (DedMorozzz @ 20.11.2014 - 12:23) |
Цитата (twin @ 20.11.2014 - 15:17) | Он не получше. Он единственный. Хранить в базе девственно чистый текст. Всё остальное от лукавого. |
Ок. Сохранил Mc`Donalds Как выдать юзеру Mc`Donalds, когда он в поиске ввёл McDonald`s?
|
Ну во-первых он помоему ищет McDonald`s, а вовсе не Mc`Donalds. Если он ошибся, это другое дело, к теме отношения не имеет. Это морфологические разборы, сфинксы всякие и прочее.
А во-вторых, ответь на контрвопрос. Если я ищу <twin> на англоязычном форуме про близнецов. Сколько результатов будет на выдаче? А мне нужно найти именно в бричках.
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
twin
Цитата |
А я говорил - не торопись. Попробуй проделать это с преславутым <twin> |
А что не так? Не пойму.
$text = '<twin>';
$text = htmlspecialchars($text);
echo htmlspecialchars_decode($text);
В базе вместо <twin> будет <twin>gt;
Поиск тоже через htmlspecialchars работает. И твой запрос <twin> успешно найдёт.
И мой <strong> найдёт. Верстку то не надо искать. Даже если понадобиться искать верстку, можно в поиске не юзать htmlspecialchars. Вообще проблем не вижу. А вот в необработанных данных такое будет невозможно найти.
Цитата |
В базе недопустимо. Это допустимо только в HTML. Для того и придумали bb-теги, не от хорошей жизни. |
От чего же это не допустимо? что [ b ] , что <b>, базе как то пофиг =)
А современные редакторы типа tinymce или ckeditor не работают с bb кодами. Ну из коробки по крайней мере.
Цитата |
Захочет заказчик перенести эти комменты куда-нибудь в джумлу. И что ты ему скажешь? |
Я не знаю как коменты хранятся в ждумле, так же не знаю как они храняться в ВасяCMS, в которую мы будем переносить комменты после джумлы.
Но с учетом того что джумла использует как tinymce, так и ckeditor, думаю перенесу без промежуточных скриптов.
_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
DedMorozzz
20.11.2014 - 16:42
Цитата (twin @ 20.11.2014 - 15:29) |
Ну во-первых он помоему ищет McDonald`s, а вовсе не Mc`Donalds. Если он ошибся, это другое дело, к теме отношения не имеет. Это морфологические разборы, сфинксы всякие и прочее. |
Это сфинксом и ищется. И оба варианта я в базу сфинкса и записываю. Я про мускул ничего не говорил ибо это не важно. База и база
И оба варианта с пользовательскими данными - я про макдональдс - одинаковы. И на запрос "McDonald`s" должно выдать "Mc`Donalds" в том числе.
И вариантов того же макдональда можно придумать штук 10. И если их не будет все выбирать - то на ко чёрт такой поиск. Можно юзера сразу попросить айдишник записи ввести
Цитата (twin @ 20.11.2014 - 15:29) |
А мне нужно найти именно в бричках. |
Это уже делается точными запросами. В гугле точные поиски делаются двойными кавычками. И то, он спец символы не учитывает
Но в зависимости от задачи, без проблем можно искать только по юзерским данным, не обработанным, но это не убирает подавляющее большинство обычных запросов с разным написанием спец символов
Резюме: Если на конкретном примере (поиск) хранить только юзерские данные - то такой поиск нахрен никому не нужен. Потому изначальный вопрос "как харанить данные" ответ единственный - используется и 1й и 2й вариант.
Когда-то нужен только 2й. Когда-то оба
_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
FatCat
20.11.2014 - 16:47
Цитата (twin @ 20.11.2014 - 14:41) |
Как ты найдешь <twin>? Если брички обрезаны? |
Запрос обрабатывается в точности так же, как текст, заносимый в БД.
_____________
Бесплатному сыру в дырки не заглядывают...
Цитата (FatCat @ 20.11.2014 - 16:47) |
Цитата (twin @ 20.11.2014 - 14:41) | Как ты найдешь <twin>? Если брички обрезаны? |
Запрос обрабатывается в точности так же, как текст, заносимый в БД.
|
Аллилуйя
_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.