Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Вывод ошибок

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
dcweb
Отправлено: 08 Октября, 2013 - 22:51:28
Post Id


Новичок


Покинул форум
Сообщений всего: 22
Дата рег-ции: Окт. 2013  


Помог: 0 раз(а)




Использую структуру MVC, интересует как лучше реализовать вывод ошибок для пользователя. Допустим при регистрации.
В контроллере есть метод валиции данных, как правильно при проверке того или иного параметра
-создавать ошибку
-при наличии ошибок, чтобы не выполнялись следующие методы регистрации пользователя
-как выводить данную ошибку или ошибки
 
 Top
DelphinPRO
Отправлено: 08 Октября, 2013 - 23:28:52
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




хз, как лучше Улыбка
я особо не заморачиваюсь. список ошибок - в сессионный массив, а оттуда на страницу, в специально отведенное место наверху.
Спойлер (Отобразить)


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
dcweb
Отправлено: 08 Октября, 2013 - 23:38:53
Post Id


Новичок


Покинул форум
Сообщений всего: 22
Дата рег-ции: Окт. 2013  


Помог: 0 раз(а)




Как-то хотелось бы избежать этих if ($this->errorCount)

И всегда нужно лучше перенаправление (чтобы F5 не работал) или это не принципиально?
 
 Top
deblogger
Отправлено: 01 Ноября, 2013 - 09:22:54
Post Id


Новичок


Покинул форум
Сообщений всего: 59
Дата рег-ции: Нояб. 2013  


Помог: 0 раз(а)

[+]


В спойлере жуть. Сама собой корячится таблица (структура) всех параметров необходимых для входа, которая сама себя и проверит. Другими словами метод надо превратить в проперть и сделать другой метод.

Для ТС

Чуть более еще с другой стороны видно что описывать эту структуру в скрипте нет никакой нужды - она и так уже есть в БД. Таким образом проверка реализуется ровно в одной точке - в цикле перебора всех введенных данных с правильными данными которые предусмотрены условиями. Правильные данные берутся из той же таблицы. Например если поле NOT NULL - стало быть пустым это поле оставлять нельзя. Если у поля индекс UNiQUE - значит введенное имя не должно совпадать с другим. Если поле пароль - наоборот, должно совпадать. Правила для паролей точно так же легко сохранить в БД. Далее, у поля есть имя - по этому имени (таблица.имя_поля) можно достать "перевод" Таким образом в цикле вентилируя все записи и сравнивая с тем что ввел юзер можно поведать ему обо всех ошибках без череды иф дзен.
(Добавление)
Я знаю что программисту в стопицот раз проще забацать хоть стопицот таких иф эмпти дзен чем корячится с проектированием бд, но это не значит что нет другого пути. Это всего лишь вопрос выбора.
(Добавление)
В принципе СУБД сама может все проверить и сообщит о косяках. Но переводить ее мессаги на человеческий, даже по номеру ошибки, в смысле не на человеческий, а на юзерский - не такое простое дело.

Например вы можете инициировать запись введенных данных (после всех санаций ессно) и, если табля спроектирована правильно - СУБД (майскля) не даст записать неправильно.

Вы же проверяете наличие такого юзера запросом к БД. Симметрично можно проверить и наличие правильности всех введенных данных.

Но вообще-то все это делается на яве. На php еще раз делается - но там уже не надо расшаркиваться - для особо умных которые умудрились пробиться через проверки на JS можно обойтись без церемоний. Ну, то есть сразу на ... и все.

(Отредактировано автором: 01 Ноября, 2013 - 09:23:18)

 
 Top
DelphinPRO
Отправлено: 01 Ноября, 2013 - 11:30:57
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




deblogger пишет:
На php еще раз делается - но там уже не надо расшаркиваться - для особо умных которые умудрились пробиться через проверки на JS можно обойтись без церемоний. Ну, то есть сразу на ... и все.

Интересная мысль Улыбка Как-то не приходило в голову.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
deblogger
Отправлено: 01 Ноября, 2013 - 20:28:40
Post Id


Новичок


Покинул форум
Сообщений всего: 59
Дата рег-ции: Нояб. 2013  


Помог: 0 раз(а)

[+]


Чтобы проверять js'ом не прибегая к гемору а аяксом (если конечно он уже не течет в рабочем порядке), в браузер придется загрузить все минимально необходимые данные. Иначе жиэз нечем будет работать. Эта самая загрузка автоматически откроет и такие возможности как мило сообщить юзеру сколько и чего он должен ввести. Прямо в плейсхолдеры можно вписать скажем "Имя, 64 буквы", или там "Возраст, целое число". В хтмле5 много интересных элементов появилось, но не в браузерах пока. Например для чисел есть поле, в браузерах есть кое-где. Сведения о том что можно вносить в таблицю Юзеры и чего нельзя - берутся из таблицы Юзеры. Кроме стандартного метода fetch_field() можно применить нестандартный - скачать инфо о табле с информационной схемы.

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

Потом значит захотелось поле добавить или удалить - и понеслась по всем классам с инклюдами корректировка.

Попробуйте сделать так чтобы в таблице появилось поле - и в другой таблице правило для него - и оно автоматически появилось в интерфейсе и начало функционировать. Удалилось поле из таблицы - ну и туда ему и дорога. В интерфейсе тоже пропало и никаких сообщений о недостаче.
 
 Top
dcweb
Отправлено: 10 Января, 2014 - 00:04:50
Post Id


Новичок


Покинул форум
Сообщений всего: 22
Дата рег-ции: Окт. 2013  


Помог: 0 раз(а)




deblogger
А можно пример как такое делается?
 
 Top
TroL
Отправлено: 10 Января, 2014 - 08:13:37
Post Id


Гость


Покинул форум
Сообщений всего: 73
Дата рег-ции: Нояб. 2012  


Помог: 0 раз(а)




dcweb пишет:
deblogger
А можно пример как такое делается?

Вот например http://ruseller[dot]com/lessons.php?[dot][dot][dot]id=29&id=174
 
 Top
dcweb
Отправлено: 10 Января, 2014 - 10:41:03
Post Id


Новичок


Покинул форум
Сообщений всего: 22
Дата рег-ции: Окт. 2013  


Помог: 0 раз(а)




TroL
Меня интересует как правильно сделать валидацию формы в соответствии со структурой базы, то что deblogger описал в своих сообщениях.
 
 Top
Ch_chov
Отправлено: 10 Января, 2014 - 11:42:26
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




deblogger, знать структуру базы данных недостаточно для посторения валидаторов. Например, как сделать валидацию емайла или номера телефона? Как быть с данными которые хранятся не в БД или вообще нигде не хранятся?
Другой вариант, создавать сначала модель. И на ее основе генерить валидаторы и структуру БД.
 
 Top
dcweb
Отправлено: 10 Января, 2014 - 18:00:37
Post Id


Новичок


Покинул форум
Сообщений всего: 22
Дата рег-ции: Окт. 2013  


Помог: 0 раз(а)




Ch_chov
deblogger пишет:
Например если поле NOT NULL - стало быть пустым это поле оставлять нельзя. Если у поля индекс UNiQUE - значит введенное имя не должно совпадать с другим. Если поле пароль - наоборот, должно совпадать. Правила для паролей точно так же легко сохранить в БД. Далее, у поля есть имя - по этому имени (таблица.имя_поля) можно достать "перевод"

Как я понимаю нужно для этого сделать ещё одну таблицу или комментарий для поля использовать.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Объектно-ориентированное программирование »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB