Что делать с данными, приходящими от пользователя?

Статус
В этой теме нельзя размещать новые ответы.

zarus

Хитрожопый макак
Автор оригинала: SiMM
> Потому что редактируются они в разы реже, чем просматриваются.
А как насчёт того, что в этом случае для редактирования необходимо писать обратный перевод из того, что лежит в базе, в то, что ввёл пользователь? Стоит ли игра свеч? Опять же возвращаясь к тому, что это (вывод с парсингом) не самое узкое место - зачем усложнять самому себе жизнь надуманными задачами?
О5-25.
PHP:
foreach ($forum['users'] as $user=>$opinion) {
  echo $user.': '.$opinion;
}
 

Screjet

Новичок
_RVK_
Привел агрумент: экономия ЦП.
Или это не аргумент?
Экономия на спичках?
Когда напишешь/запустишь серьезное приложение,
увидешь загрузку, вспомнишь все несэкономленные "спички":
где какой SQL не был explain'ед, где у тебя работы со строками, где лишние итерации, где мегабайтные переменные переживают весь поток опкода и т.д.

SiMM
Кеширование = это те же костыли. Конечно, если приложение/его код спроектирован/написан "а-бы оно было и работало", то, естественно, лучше "закостылять" такое приложение, напхать туеву хучу всяких ускорителей/кешей, чем исправить/переписать. Но какой глубой смысл изначально проектировать/реализовывать такое приложение?

Повторюсь еще раз: нет смысла делать одно-и-тоже по нескольку раз. Это здравый смысл подсказывает.
 

zarus

Хитрожопый макак
Эврика! Нашел аргументированный ответ, почему надо экономить:

Всем известный Газпром (явно не бедная фирма) заставляет сотрудников экономить на писчей бумаге, приучая пользоваться записными книгами на компьютере. Думаю, что экономия огромная, учитывая цену 1 пачки бумаги А4, количество сотрудников Газпрома и их креативный потенциал, который ищет выход :)
 

kvf77

Red Devil
_RVK_

Рома так и не смог ответить на простой вопрос - зачем хранить то, что хранить не нужно? Зачем в форуме о цветах или ядерной физике хранить какой-то HTML и прочую дребедень и так далее? Зачем вываливать Маше на экран всяку хрень, если она домохозяйка, просто взяла и неправильно скопировала что-то откуда-то и туда попали тэги HTML, а она не досмотрела - бедная девочка будет пытаться понять что за мусор, париться, пытаться что-то исправить. Зачем выдавать тойже бедной девочке бесчисленные сообщения о том, что она ввела что-то неправильное - HTML тэг, например, о котором она слыхам неслыхивала, зачем говорить пользователю, что телефон нельзя писать через - когда просто достатояно выкусить все символы кроме цифр и созранить телефон так как тебе нужно? Таких зачем миллионы. К томуже вы просто не понимаете насколько геморно будет людям, которые придут после вас и будут париться с тоннами мусора, который позасовывали в базу такие программисты.
Я боюсь, что некоторые из вас просто на осознают всю сумму проблем и потерь от каждого тупого надоедливого сообщения юзеру, особенно когда смысла в нем нет.
 

_RVK_

Новичок
zarus

Чушь! Электронный документооборот не для экономии бумаги.
 

master_x

Pitavale XXI wieku
Screjet
Ладно, ты говоришь зачем делать одно и то же. Вот представь, есть Вася Пупкин, написавший для тебя программу. Ты вводишь в эту программу свои данные, а программа берет и без спроса преобразует для скорости все в свой формат. Это хорошо, если у Пупкина руки правильные и он может тебе вернуть твои данные, а если не так? Ну когда же наконец все поймут, что то, что ввел конечный пользователь должно храниться в базе как есть, мы не имеем право менять первоисточник перед храненением.
Аргумент в пользу скорости у вас есть. Но вы делаете много лишних телодвижений: 1) получаете данные, режете, мнете, колбасите как хотите для скорости и помещаете в БД. 2) Пользователь захотел отредактировать и вы опять режете, мнете, колбасите обратно. 3) Пользователь захотел экспорт в другой формат и вы опять же режете, мнете, колбасите. Я не делаю ни одного из вышеприведенных телодвижений.
 

kvf77

Red Devil
master_x

как ты не поймешь - мой проект - это мой проект и ты будешь вводить то, что мне надо и что я тебе говорю, а вовсе не наоборот - если ты не научился придерживаться правил - будь готов, что тебя поправят и не нано тут подменять понятия первоисточника. Как говорится - если ничего не получается, прочти наконец инструкцию.
 

Vladson

Сильнобухер
Давайте глянем на проблему с другой стороны...

Данные вводятся пользователем один раз !!!

После парсинга это уже не те данные что ввёл пользователь а изменённые под представлние конкрентого скрипта.

Если просто htmlspecialchars легко обратим то более глубокий парсинг обратим не всегда, и стоит добавить в скрипт любой блок (например експорт в RSS или отправку на Mail) то теряется возможность использования этих данных и всё что можно получить это искаверканную подделку.

Это можно сравнить с написанием исходника программы, исходник легко откомпилировать под любую платформу, в то время как исполняемый Win32 файл весьма проблематично будет конвертануть под работу на Unix...

Т.е если хранить исходник то отподает куча проблем решение которых иногда не просто, а иногда просто не возможно
 

master_x

Pitavale XXI wieku
kvf77
так ты оказывается просто не знаешь элементарных правил работы с конечным пользователем, ты просто не представляешь себе что такое УДОБНЫЙ ИНТЕРФЕЙС. Ты со своей девочкой мне ничего не доказал, а если придет html-щик, а ты ему все теги порежешь? Знаешь до тебя уже много программистов было, которые писали программки, которые все решали за пользователей, в результате очень негативный опыт.
 

_RVK_

Новичок
kvf77

Ты мне вчера это все объяснял.

1. Зачем гранить тонны мусора.
- Это не мусор. Это данные введенные пользователем. Он захотел ввести так. Это его права, потому как ради него создана наша система. Если домохозяйка маша случайно что-то не так скопировала, ей нужно дать возможность исправить свою ошибку. Но если она это сделала сознательно, то каково же будет её удивление, когда её данные, без её ведома, были самовольно изменены.

2. Зачем форуму про цветы HTML
- что такое HTML? Чем он, по сути, отличается от обычного текста? Это асего лишь набор символов, которые в сумме, при определенной последовательности, говорят браузеру как их отображать. Но это всего лишь текст. И когда я ввожу <yo><yo!> я хочу этот текст увидеть в том виде, в каком я его ввел. Я не позволяю ничего решать за меня. Я пользователь, который проявил милость и зашел на ваш ресурс. Вы зарабатываете деньги(уважение, ил что еще) на мне. И я не хочу что бы вы за меня решали что можно удалить из моего текста, а что нельзя. Дайте мне право это решать.

3. Сообщения пользователю называются "пользовательский интерфейс", и 90% скажут спасибо за сообщение "Ваш тест привышает допустимые размеры в 1000 символов. Хотите что бы мы за вас обрезали текст до заданной длины". Этим вы проявляете уважение к пользователЮ, позволяя ему самому решать что предпринять. Много ли пользователей потеряла windows? Наоборот. При всех недостатках у неё дружественный интерфейс, что делает её популярной. Если бы ворд резал бы ваши тексты как ему вздумается, стали бы мы им пользоваться?
 

kvf77

Red Devil
master_x

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

Vladson
твой пример не показателен - с чего ты решил, что превратить первоисточник в нужный вид проще, чем упорядоченные данные с заранее известной структурой?

_RVK_
первое замечание совершенно не катит - если мне надо дать Маше свободу действия - я дам, если мне надо получить от Маши конкретные данные в конкретном виде - я именно так от нее их и получу. Наивно полагать, что делая htmlspecialchars ты не меняешь Машины данные - Маша-то наверное удивится увидев HTML теги вместо красивой таблички, которую она пол часа рисовала и вводила в твою форму - так что не надо мне тут рассказывать истории - ты делаешь тоже самое что и я - только упорно называешь это другим именем

второй пункт я описал в предыдущем абзаце - вводя в форуме про цветы HTML теги - человек врядли захочет увидеть на экране эти теги, правда ведь? так что не подменяй понятия

3. пункт совершенно ни к месту - или ты, думая так сам, полагаешь что я всегда тока парсю данные просто ну никогда не оставляю их в том виде, как они были введены? какое-то наивно-глупое заблуждение. И Маша всегда получит свое сообщение, если ее нарушения в какой-то степени фатальны и не могут быть пофиксены автоматически. Поэтому давай такие глупые примеры мы оставим впокое - я не телепузик, делающий все одним способом
 

Vladson

Сильнобухер
>>> превратить первоисточник в нужный вид
kvf77
Не пишите слова значение которых вам не извесно, для начала попробуйте понять значение слова "первоисточник" и тогда вам многое станет понятно.
A пока что прочитайте ещё раз приведённый мной пример про исходник программы.

Вот ещё пример,

У вас в кошельке 147 рублей и 52 копейки,
друг вас спросил сколько у вас и вы ему ответили что 150 и были правы
(ибо такой допуск в общении с друзьями вполне допустим)
однако если вы захотите на ваши деньги купить вещь
(которая стоит именно 150 рублей)
то вам я думаю это не всегда удастся...
 

zarus

Хитрожопый макак
Автор оригинала: Vladson
>>> превратить первоисточник в нужный вид
kvf77
Не пишите слова значение которых вам не извесно, для начала попробуйте понять значение слова "первоисточник" и тогда вам многое станет понятно.
A пока что прочитайте ещё раз приведённый мной пример про исходник программы.

Вот ещё пример,

У вас в кошельке 147 рублей и 52 копейки,
друг вас спросил сколько у вас и вы ему ответили что 150 и были правы
(ибо такой допуск в общении с друзьями вполне допустим)
однако если вы захотите на ваши деньги купить вещь
(которая стоит именно 150 рублей)
то вам я думаю это не всегда удастся...
Некорректный пример.
Задачу надо представлять как большой набор вариантов ответов:
147.52р
или
147р.52к
или
147=52
или
...
И при этом мне нужно получить значение в том виде, в котором мне удобнее с ним работать. Человеку же по барабану, как выведет ему система сообщение о том, какая сумма у него в кошельке, лишь бы оно соответствовало действительности. Или вы будете утверждать, что каждый раз при обращении к базе применять функцию приведения к "нормальному" виду - это разумно, когда можно применить ее 1 раз при вставке в базу.

Реально получается, что мы просто друг друга не понимаем. И все правы, и все пытаемся доказать друг другу, что мы правы!
 

Screjet

Новичок
Vladson
Обрати внимание упоминание про _типы_ данных.
Телефон = это телефон, не набор цифр
ЗИП = это ЗИП, только цифры, причем их всегда пять
Свободный текст = это свободный текст
Текст + HTML,
Текст + ВВ,
Текст + HTML + BB
Текст + HTML + BB для RSS
Текст + HTML + BB для WAP
и т.д.

Это все _разные_ типы данных.
 

Vladson

Сильнобухер
zarus
А я не хочу вам говорить что у вас "147.52р", я хочу говорить что у вас 147 рублей и 52 копейки !!!
 

SiMM

Новичок
Screjet, а вы вариант
> Текст + ВВ
вообще не рассматриваете? Лично меня в данном топике интересует только он. Для хранения цифр и дат - существуют специальнопредназначенные для этого типы данных. Да и существование пользовательских специальнопредназначенных типов данных лично я не исключаю.
 

_RVK_

Новичок
Screjet
Никто не спорит про типы. Я говрю лишь о том что у пользователя нужно спросить, или хотя бы предупредить о том что ты делаешь.

Почему в обчно ПО я не могу вспомнить случая когда бы данные изменялись бы без моего ведома? И почему в Web это не считается зазорным?
 

zarus

Хитрожопый макак
Автор оригинала: Vladson
zarus
А я не хочу вам говорить что у вас "147.52р", я хочу говорить что у вас 147 рублей и 52 копейки !!!
Да можете говорить, что у вас 50 лат или 5 баксов в кошельке. Моя задача простая - перевести Ваше сообщение в рубли и сохранить в базе. А потом, когда Вы у меня спросите, "А сколько у меня сейчас в кошельке денег в йенах?" - я мог бы выдать ответ сразу помножив на курсы валют, а не сначала запнувшись преобразовать к нормальному виду. Это одна из причин почему не надо хранить as is.
 

Angel Echo

Guest
Входные данные проверять и исправлять необходимо !!!

Чем корректнее данные хранит система, тем она интеллектуальнее, так же как человек грамотнее, если пишет без ошибок !

Например, если пользователь вводит "москва", будет не лишне сохранить исправленное значение "Москва", а пользователю к тому же сказать, что названия городов пишутся с большой буквы ! Идеальным же вариантом конечно является список всех городов, из которого нужно только выбрать подходящий. Вот конкретный пример отсутствия проверки данных (выдает система b2b-energo, при поиске организаций в БД):

Страна/организаций

Россия 702
df 1
АТЛАНТИДА 1
Васюкинская республика 1
Зимбабве 1
Израиль 1
плплполполо 1
республика 1
Росиия 3
Росия 1
Российская Федеарция 1
Российская Федерация 19
РоссийскаяФидирация 1
Россиская Федерация 1
Русь великая 1
РФ 16
Сомали 1
Тридевятое государство 1
 

SiMM

Новичок
> Моя задача простая - перевести Ваше сообщение в рубли и сохранить в базе.
Кладу 5$, вы его в базе сохраняете как 150 рублей, а через месяц бакс стоит 50 рублей, и я забираю вместо вложенных 5 всего 3. Изюмительно :)
Неудачный пример, в общем.

> Входные данные проверять ...
Почитайте топик. С этим никто не спорит. Но бывают такие входные данные, которые не надо исправлять. И речь, ИМХО, тут именно о них - как хранить такие данные - уже приведённые к выводимому виду или же в первозданном виде?
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху