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]   

> Описание: Телефонный справочник
Jmunb
Отправлено: 11 Ноября, 2011 - 10:20:08
Post Id


Новичок


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


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




Добрый день.
Недавно потребовалось написать простой телефонный справочник на PHP используя ООП.
Требуемый функционал:
-Удаление
-Добавление
-Изменение
-Проверка на валидность введенных данных
-Вывод сообщений пользователю
-Поиск(Пока не реализовал)

Вот что навоял за вчерашний вечер http://roxm[dot]ru/phonenumber

Хотелось бы услышать конструктивную критику по данному коду, советы и предложения по его усовершенствованию так как задание очень важное хотя и не высокой сложности.
Скачать файл: www.zip
Скачан раз: 316

(Отредактировано автором: 11 Ноября, 2011 - 10:29:45)

 
 Top
ams
Отправлено: 11 Ноября, 2011 - 10:27:57
Post Id



Посетитель


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


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




КОд где? Улыбка
 
 Top
Jmunb
Отправлено: 11 Ноября, 2011 - 10:30:09
Post Id


Новичок


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


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




ams пишет:
КОд где? Улыбка

дозалил
 
 Top
валера
Отправлено: 11 Ноября, 2011 - 10:31:53
Post Id


Новичок


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


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




меня пугает тот факт, что любой может отредактировать/добавить/удалить запись... или так было задумано?
 
 Top
Jmunb
Отправлено: 11 Ноября, 2011 - 10:33:29
Post Id


Новичок


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


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




валера пишет:
меня пугает тот факт, что любой может отредактировать/добавить/удалить запись... или так было задумано?
Да так было задумано. Механизм авторизации будет прикручен позже. Сейчас волнуют вопросы ООП
 
 Top
Мелкий Супермодератор
Отправлено: 11 Ноября, 2011 - 10:45:39
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




Для джуниора - нормальная попытка, в общем.

Минусы:
MVC попытка корявая. Как вы будете делать редирект пользователя? Да хоть куки выставить? Заголовки уже отправлены.
HTML-код в коде.

XSS пропущены. SQL-инъекции тоже. А вот это очень плохо и самый большой минус.


-----
PostgreSQL DBA
 
 Top
Toxa
Отправлено: 11 Ноября, 2011 - 10:46:57
Post Id



Посетитель


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


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

[+]


каждый класс принято выносить в отдельный файл.
Раз уж ты используешь контроллер, то должна быть и модель и вид, иначе не понятна логика. А в целом ты верно мыслишь


-----
Удобный сервис для хранения файлов
 
 Top
Jmunb
Отправлено: 11 Ноября, 2011 - 11:14:19
Post Id


Новичок


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


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




Мелкий пишет:
Как вы будете делать редирект пользователя? Да хоть куки выставить? Заголовки уже отправлены.

Можно поподробнее не совсем понятно.
Мелкий пишет:
HTML-код в коде.

Эту проблему планирую решить добавлением шаблонов.
Мелкий пишет:
XSS пропущены. SQL-инъекции тоже. А вот это очень плохо и самый большой минус.

Защита от XSS и SQL инъекций по ка что не бролась во внимание. Так как этой работой мне надо показать свой уровень знания ООП. (я знаю что он не высок но хотелось бы выглядить попристойнее). Что можете в этом направлении подсказать
(Добавление)
Toxa пишет:
Раз уж ты используешь контроллер, то должна быть и модель и вид, иначе не понятна логика. А в целом ты верно мыслишь

Ну в качестве вида я использую класс View который отображает данные. Класс Number как model. Поясните если не прав.
(Добавление)
Toxa пишет:
Раз уж ты используешь контроллер, то должна быть и модель и вид, иначе не понятна логика. А в целом ты верно мыслишь

В качетсве вида я использую класс View который отображает информацию. В качестве модели класс Number который работает с данными. Если я чтото не так понял поясните пожалуйста.
(Добавление)
Toxa пишет:
Раз уж ты используешь контроллер, то должна быть и модель и вид, иначе не понятна логика. А в целом ты верно мыслишь

В качетсве вида я использую класс View который отображает информацию. В качестве модели класс Number который работает с данными. Если я чтото не так понял поясните пожалуйста
 
 Top
sKaa
Отправлено: 11 Ноября, 2011 - 11:29:56
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


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

[+]


ооп на нуле. ты просто вытащил основные функции в отдельные классы которые между собой никак не объединены логикой...
раз уж ты взялся за принцип MVC попробую в двух словах растолковать...
у тебя должна быть единая точка входа, например через index.php
.htaccess :
Спойлер (Отобразить)

Все запросы на сайт будут передавать на index.php и будут выглядеть так mysite.com/index/action
Слово index тут это как правило название контроллера. Слово action это действие которе будет выполнено в контроллере.

Далее в index.php нужно реализовать __autoload() - это "магическая" функция прочитай про нее где нибудь.. в общем если ты её реализуешь не нужно будет писать
require_once("classes.php");
__autoload сама подгрузит нужный файл если класс вдруг объявить в любом месте кода до того как вылетит ошибка..

далее суть контроллера в том что он будет разбивать запрос твой
mysite.com/index/action $current_request = explode('/', $_SERVER['REQUEST_URI']);
в массив где
$current_request[1] будет название контроллера
$current_request[2] название функции в контроллере
и загружать его :
$file = (string) 'Путь к папке контроллеров' . 'Controller_' . $current_request[1] . '.php';
дальше проверки существует ли файл
и проверка is_callable(array($controller, $action))
короче я вспомнил статью на хабре.. внимательно прочитай её от а до я..
http://habrahabr[dot]ru/blogs/php/31270/
 
 Top
Самогонщик
Отправлено: 11 Ноября, 2011 - 11:48:10
Post Id



Посетитель


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


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




Не хочу никого пугать, но формат урл и автолоад не имеют никакого отношения к MVC
 
 Top
Мелкий Супермодератор
Отправлено: 11 Ноября, 2011 - 11:54:51
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




Jmunb пишет:
Можно поподробнее не совсем понятно.

У вас контроллер вызывается только в середине шаблона, когда половина документа уже отдана - без костылей вы не сможете воспользоваться ни setcookie, ни header'ом.
Впрочем, с PHP5.3 кэширование есть по-умолчанию, но всё равно так быть не должно.

Jmunb пишет:
Защита от XSS и SQL инъекций по ка что не бролась во внимание. Так как этой работой мне надо показать свой уровень знания ООП. (я знаю что он не высок но хотелось бы выглядить попристойнее). Что можете в этом направлении подсказать

Защиту нужно реализовывать всегда. На мой взгляд, даже идеологически верно сделанный ООП, но на столько дырявый - незачёт.
mysql_real_escape_string и htmlspecialchars


-----
PostgreSQL DBA
 
 Top
sKaa
Отправлено: 11 Ноября, 2011 - 12:01:00
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


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

[+]


Самогонщик пишет:
мат урл и автолоад не имеют никакого отношения к MVC

Ну да, с этим я наверное погорячился, но всё-же я считаю что в MVC без чпу и аутолоад далеко не уйдешь...
 
 Top
Viper
Отправлено: 11 Ноября, 2011 - 12:12:45
Post Id



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


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


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




[quote=sKaa][/quote] чисто ваше имхо.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 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