| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Подкиньте примерчик кода MVC |
| Автор: nIkTo 29.11.2010, 12:12 |
| Разбираюсь с MVC в PHP, перечитал много статей, но толково рабочего кода не нашёл, может из за того что не до конца понял структуру MVC. Прошу линк на код MVC не большого проекта. http://www.google.com/codesearch |
| Автор: Guedda 29.11.2010, 14:24 |
| Возьми любой фреймворк (Zend, Kohana), и посмотри, как там все реализовано. |
| Автор: Warpkid 29.11.2010, 14:27 | ||
| Не знаю конечно, это ли тебе надо, но: http://www.phpro.org/tutorials/Model-View-Controller-MVC.html Внизу есть линк на исходники Добавлено через 1 минуту и 44 секунды
оО Пардон, но брать Zend и пробовать разобраться в нем, как и что там реализовано - это садомазохизм. |
| Автор: SamDark 29.11.2010, 15:07 |
| http://rmcreative.ru/blog/post/mvc-view http://rmcreative.ru/blog/post/mvc-front-controller-controller-i-router |
| Автор: nIkTo 29.11.2010, 16:25 |
| Warpkid, SamDark, спасибо за ссылки посмотрел, примерно такие статьи и посты я и читал, кстати http://www.phpro.org/tutorials/Model-View-Controller-MVC.html есть рерайт на русском http://habrahabr.ru/blogs/php/31270/. Хотелось бы полноценного примера, с аутентификацией, сессиями, работой с БД, но и лезть в сложные фреймворки думаю пока нет смысла, так как в таких дебрях я точно заблужусь. |
| Автор: nIkTo 4.12.2010, 12:12 |
| Так и не нашёл нормального примера аутентификации в MVC =( Может кто ссылку на код дать ? |
| Автор: Muerto 4.12.2010, 12:29 |
| nIkTo, на YII глянь, у них базовый пример эт блог |
| Автор: nIkTo 4.12.2010, 12:39 |
| Muerto, очень много кода, скил пока не тот у меня. Нужно что-то проще. |
| Автор: Muerto 4.12.2010, 13:10 |
| делаешь контроллер авторизация, далее добавляешь разные действия, как восстановление пароля, вход, страница не верного пароля... Если понятна основа то в чем проблема? /auth/login /auth/recpass /auth/fail/err/4 и тп. |
| Автор: nIkTo 4.12.2010, 13:41 |
| Создаю такую структуру: /login /logout /page1 /page2 /page3 для того чтобы смотреть page1, page2, page3 необходима авторизация. Так вот вопрос где проверять прошёл ли пользователь аутентификацию ? то есть заходит пользователь на /page2 роутер вызывает контроллер page2 с дефолтным действием index, а вот где проверить надо ли вызывать котроллер или делать редирект на /login .... в общем как говорится лучше один раз увидеть чем ... |
| Автор: Muerto 4.12.2010, 14:20 |
| Ну возможно есть какие то супер хитрые способы к примеру, создать таблицу прав доступа, и если сессии нету и раутер твой получает защищенную страницу, то на логин послать... А так просто проверяешь сессию где угодно... в контроллере твоей страницы к примеру... |
| Автор: nIkTo 4.12.2010, 14:29 |
| Muerto, тоесть, если пользователь запрашивает /page1 то код: 1. Стартует сессию 2. Обрабатывает url и вызывает контроллер page1 3. В конструкторе контроллера проверяем есть ли $_SESSION['password'] и $_SESSION['username'] если нет то пишем header('Location: /login'); так ? |
| Автор: SamDark 4.12.2010, 15:11 |
| Стартовать сессию надо вообще всегда. Остальное так же. |
| Автор: ksnk 4.12.2010, 16:38 |
не всегда, а только когда есть кука или параметр с именем session_name(). Ну или когда действительно нужно стартовать сессию - при авторизации, например. |
| Автор: nIkTo 4.12.2010, 17:56 |
| |
| Автор: S.A.P. 4.12.2010, 21:57 | ||
Зависит от того, к чему тебе нужно ограничить доступ. К конкретному адресу или контроллеру который к нему прикручен, а может исходя из каких - то внутренних правил, специфичных для контроллера. В первом случае пользователя можно обломать на этапе роутинга, в остальных - проверку можно производить и в контроллере. Ежели ты ломаешь голову над тем как хранить и обрабатывать структуру прав - покопай в сторону ACL |
| Автор: SamDark 5.12.2010, 02:59 |
| Или RBAC. |
| Автор: nIkTo 5.12.2010, 11:14 |
| Нужна просто аутентификация ни каких ролей или разграничения прав среди аутентифицированных нету. |
| Автор: Muerto 5.12.2010, 13:29 | ||
Ну можно так сделать:
Ну а дальше немного воображения и экспериментирования... Это ты в свой раутер запихать можешь... За святое брать не стоит ибо на скорую руку накидал |
| Автор: ksnk 7.12.2010, 19:05 | ||||
что-то вроде такого... |