Одесса: 7°С (вода 9°С)
Киев: 1°С
Львов: 1°С

Тема: Помогите разобратса с MVC (PHP)

Ответить в теме
Страница 1 из 2 1 2 ПоследняяПоследняя
Показано с 1 по 20 из 31
  1. Вверх #1
    Новичок Аватар для Mихаил
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    32
    Сообщений
    65
    Репутация
    12
    Записей в дневнике
    1

    По умолчанию Помогите разобратса с MVC (PHP)

    Хочу понять MVC, за часик разобрался и написал вот такое творение. Хочу услышать критику, о том похоже это на MVC либо нет, и как реализовать правильно.

    форма ввода пользователем логина и пароля.
    Код HTML:
    <form action="user.php" name="autoriz" method="post">
    Ваше имя:
    <input type="text" name="username" maxlenght="15" value="">
    Ваш пароль:
    <input type="password" name="userpassword" maxlenght="15" value="">
    <a href="javascript:void()" onClick="autoriz.submit()">вход</a>
    </form>
    соответственно код user.php
    PHP код:
    <?
     
    require_once("user.inc.php");
     
    $user = new view($_REQUEST['username'],$_REQUEST['userpassword']); 
     echo 
    $user->message.'<br>';
    ?>
    и код модуля user.inc.php
    PHP код:
    <?
    /*для проверки введенных пользователем данных*/
    class controller {
     function 
    verifydata($uname,$upassword) { //если левые символи заменяем их
      
    $uname=controller::criterytype($uname);
      
    $upassword=controller::criterytype($upassword);
      
    $mod = new model();
      
    //Передаем в клас model для сравнения с БД.  
      
    if(mysql_error())  //Если были ошибки с БД, тогда нечего уже не ищим
         
    view::showtoscreen(mysql_error()); 
      else
      if(
    $mod->veryquery($uname,$upassword)) 
         
    view::showtoscreen("Пользователь зарегистрирован в БД");
      else 
         
    view::showtoscreen("Регистрации в БД нет");
     } 
    //verifydata
     // Проверка данных на левые символы
     
    function criterytype($string) { 
       return 
    $string=htmlspecialchars(trim($string));
     } 
    //criterytype
    //controller

    /*для ввода данных от пользователя*/
    class view {
      var 
    $message;  
      
    /*Получаем данные от пользователя через класс*/
      
    function __construct($name,$password) {
        if(empty(
    $name) or empty($password)) //Проверяем на содержание данных
           
    view::showtoscreen("Вы не указали имя либо пароль");
        else 
           
    /*все в порядке можно отправлять данные 
           для проверки на корректность ввода данных */
           
    controller::verifydata($name,$password); 
      } 
      function 
    showtoscreen($message) {  //То что выведем на печать
               
    $this->message=$message;
      } 
    //view

    /*класс для работы с БД*/
    class model {
      private 
    $error;        //На случай ошибок при связи с БД
      
    private $resultquery;  //информация о наличии регистрации пользователя в БД
      
    private $dbhost     'localhost';
      private 
    $dbusername 'dbuser';
      private 
    $dbuserpass 'dbpass';
      private 
    $dbname     'dbname';
        
      function 
    __construct() {
       
    $connect=mysql_connect($this->dbhost,$this->dbusername,$this->dbuserpass);
       if(
    $result=mysql_select_db($this->dbname,$connect)) 
          
    $this->error=false;
       else {
          
    $this->error=true;
          }  
      } 
    //__construct()
      
      
    function veryquery($name,$password) {   
          if(!
    $this->error) {  // Если есть связь с БД посылаем запрос
             
    if($query mysql_query("SELECT * FROM users")) 
                 while(
    $filds=mysql_fetch_object($query)) {
                   if(
    $filds->name==$name and $filds->password==$password
                   {
                     
    $this->resultquery true//Запись найдена
                     
    break; //Прерываем while чтобы не маслать БД в "холостую"
                   
    }
                    else
                     
    $this->resultquery false//Соотвественно не найдена
                 
    //while  
          
    //if error
          
    return $this->resultquery;
      }
    //veryquery
    }
    ?>
    Насчет проверки вводимых данных строго не судите делал лайт вариант кода, главная задумка была разобратса с MVC


  2. Вверх #2
    Супер модератор
    Борец за справедливость
    Аватар для commando
    Пол
    Мужской
    Адрес
    Odessa, UA
    Сообщений
    3,122
    Репутация
    1538
    ну что-то типа такого. Основной смысл в аббревиатуре: контроллер управляет действиями, взаимодействую с базой через модели, также в моделях делаются все необходимые расчеты. Полученные результаты отдаются вьюву, который их отображает в соответствии со своим шаблоном.
    /dev/php

  3. Вверх #3
    Новичок Аватар для Mихаил
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    32
    Сообщений
    65
    Репутация
    12
    Записей в дневнике
    1
    Хорошо, но вот по коду, елемент модели controll он должен строитса как отдельный класс, и взаимодейстовать например с user.php, или он сразу должен принимать данные от пользователя, а модель view отображать их, либо нужно использовать как я написал выше еще файл user.php, который передает и принимает данные от модели mvc.

    И еще одни вопрос CakePHP на данный момент актуальный фреймворк, либо есть более распространенней? И какие?

  4. Вверх #4
    Новичок Аватар для Mихаил
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    32
    Сообщений
    65
    Репутация
    12
    Записей в дневнике
    1
    Фух... с MVC разобрался и сам себе ответил на свой вопрос выше Классика:
    Код:
    /application
    --/models
    ---model.php
    --/controllers
    ---controller.php
    --/view
    ---/user
    ----index.html
    Тоесть без всяких дополнительных файлов user.php, все разбиваем по каталогам и передаем управления, притом данные от формы передаютса в файл index.html папки user ветки view.

    Думаю это правильно?

  5. Вверх #5
    Новичок Аватар для Mихаил
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    32
    Сообщений
    65
    Репутация
    12
    Записей в дневнике
    1
    По framework'ой подсказали актуально Drupal и Jommla.
    Тема еще не закрыта, буду разбиратса будут вопросы

  6. Вверх #6
    Посетитель Аватар для D>C
    Пол
    Мужской
    Возраст
    28
    Сообщений
    184
    Репутация
    24
    Mихаил
    джумла и друпал- это цмски (поправьте, если ошибаюсь)

    И еще одни вопрос CakePHP на данный момент актуальный фреймворк, либо есть более распространенней? И какие?
    ну, думаю, это личные предпочтения.
    смотришь оффсайты,комьюнити, доки каждого и выбираешь, что тебе нравицо =)

    Сравнение кодигнитера, кейка и yii/
    на хабре еще было сравнение кодингнитера, кейка, зенда и симфони вродь, но сцылко, к сожалению, потирялось(
    / Carpe diem \
    \ Tempus curat omnia /

  7. Вверх #7
    Супер модератор
    Борец за справедливость
    Аватар для commando
    Пол
    Мужской
    Адрес
    Odessa, UA
    Сообщений
    3,122
    Репутация
    1538
    Действительно фремворк можно выбирать какой больше нравится, я например люблю codeIgniter.
    Mихаил: по поводу твоей структуры. Когда файлов много, вьюхи конечно разделять по категориям. Также существуют и субконтроллеры, это вполне нормально, но только когда действительно нужно, а не лишь бы сделать схему и радоваться что она работает.
    По поводу другапа и ждумлы все верно сказано. Мой совет - пока что не думать о них, потому что работа в виде "разработать гавномодуль под джумлу за 100 у.е." нормального человека вряд ли заинтересует. Берегите мозк
    /dev/php

  8. Вверх #8
    Новичок Аватар для Mихаил
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    32
    Сообщений
    65
    Репутация
    12
    Записей в дневнике
    1
    Цитата Сообщение от commando Посмотреть сообщение
    ...Также существуют и субконтроллеры, это вполне нормально, но только когда действительно нужно, а не лишь бы сделать схему и радоваться что она работает...
    Так требуют работадатели.
    Цитата Сообщение от commando Посмотреть сообщение
    ...По поводу другапа и ждумлы все верно сказано. Мой совет - пока что не думать о них, потому что работа в виде "разработать гавномодуль под джумлу за 100 у.е." нормального человека вряд ли заинтересует. Берегите мозк...
    Та дело в том, что мне нужна работа, а сейчас звездные требования на должность PHP-программиста.
    Последний раз редактировалось Mихаил; 24.05.2009 в 23:07.

  9. Вверх #9
    Супер модератор
    Борец за справедливость
    Аватар для commando
    Пол
    Мужской
    Адрес
    Odessa, UA
    Сообщений
    3,122
    Репутация
    1538
    я бы сказал так: "сейчас модно писать звездные требования" и берут как правило более слабых работников, или берут слабых на должность сильных, что еще хуже. просто у нас такая психология: получить самый качественный товар\услуги, вот и пишут что нужно знать все. А когда рядом еще отметка 500 у.е. становится смешно )))
    /dev/php

  10. Вверх #10
    Новичок Аватар для Mихаил
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    32
    Сообщений
    65
    Репутация
    12
    Записей в дневнике
    1
    Тогда подскажите мне пожалуйста ориентировочную сумму на которую может претендовать PHP программист, без опыта работы со средним уровнем знаний в PHP(ООП,MVC), MySQL, HTML (верстка table,div)(XHTML), CSS, JavaScript, Ajax, и Smarty. Притом знаком с фреймворком CakePHP и apache фишкой mod_rewrite. + к этому ANSI C++, Python?

  11. Вверх #11
    Посетитель Аватар для D>C
    Пол
    Мужской
    Возраст
    28
    Сообщений
    184
    Репутация
    24
    Mихаил
    200-400, имхо
    / Carpe diem \
    \ Tempus curat omnia /

  12. Вверх #12
    Супер модератор
    Борец за справедливость
    Аватар для commando
    Пол
    Мужской
    Адрес
    Odessa, UA
    Сообщений
    3,122
    Репутация
    1538
    ну 200 это слишком. Я думаю джуниору на выращивание баков 500 дадут
    /dev/php

  13. Вверх #13
    Новичок Аватар для Mихаил
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    32
    Сообщений
    65
    Репутация
    12
    Записей в дневнике
    1
    Цитата Сообщение от commando Посмотреть сообщение
    ну 200 это слишком. Я думаю джуниору на выращивание баков 500 дадут
    Согласен. Столько знать и за 200 работать, торговый представитель больше получает чем программёр.

  14. Вверх #14
    Новичок Аватар для Mихаил
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    32
    Сообщений
    65
    Репутация
    12
    Записей в дневнике
    1
    Ладно, появятса сложности с кодом, напишу в эту тему, а то с MVC тема переростает в трудоустройство %)

  15. Вверх #15
    Посетитель Аватар для D>C
    Пол
    Мужской
    Возраст
    28
    Сообщений
    184
    Репутация
    24
    /offtop
    ну 200 это слишком. Я думаю джуниору на выращивание баков 500 дадут
    кгм..ну я вообще изначально на 150 шел
    Последний раз редактировалось D>C; 26.05.2009 в 03:25.
    / Carpe diem \
    \ Tempus curat omnia /

  16. Вверх #16
    Супер модератор
    Борец за справедливость
    Аватар для commando
    Пол
    Мужской
    Адрес
    Odessa, UA
    Сообщений
    3,122
    Репутация
    1538
    а я на 100, только это было 7 лет назад.
    /dev/php

  17. Вверх #17
    Новичок Аватар для Mихаил
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    32
    Сообщений
    65
    Репутация
    12
    Записей в дневнике
    1
    <offtop>А сейчас за 150 где можно найти? Нужно же опыт работы нарабатывать...</offtop>

  18. Вверх #18
    Супер модератор
    Борец за справедливость
    Аватар для commando
    Пол
    Мужской
    Адрес
    Odessa, UA
    Сообщений
    3,122
    Репутация
    1538
    гугли побольше, не бойся звонить. И не нужно говорить сразу что ты неопытный. Вполне возможен вариант, что тебя возьмут на должность чуть выше, чем ты умеешь и в боевых условиях ты быстро нарастишь скилл.
    /dev/php

  19. Вверх #19
    Новичок Аватар для Human Factor
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    35
    Сообщений
    45
    Репутация
    26
    критика по коду:
    в принципе по концепции MVC разнесено верно.

    есть замечания по реализации veryquery($name,$password), а именно:
    - зачем выбирать ВСЕХ пользователей, а затем идти по ним циклом??? можно ведь сразу выбрать одного, который интересует. см. SQL: WHERE
    - хранение паролей в открытом виде, как следует из $filds->password==$password. Если уведут базу, получат пароли всех юзеров. Идея в том, что хранить не пароль, а ХЭШ от него (например md5). а проверять на соответствие хеша, типа $filds->passwordHash==md5($password)

    а так вобщем неплохо. трудоустраивайся, набирайся опыта, удачи во всем
    Everything is a copy of a copy of a copy.

  20. Вверх #20
    Новичок Аватар для Mихаил
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    32
    Сообщений
    65
    Репутация
    12
    Записей в дневнике
    1
    Цитата Сообщение от Human Factor Посмотреть сообщение
    критика по коду:
    в принципе по концепции MVC разнесено верно.

    есть замечания по реализации veryquery($name,$password), а именно:
    - зачем выбирать ВСЕХ пользователей, а затем идти по ним циклом??? можно ведь сразу выбрать одного, который интересует. см. SQL: WHERE
    - хранение паролей в открытом виде, как следует из $filds->password==$password. Если уведут базу, получат пароли всех юзеров. Идея в том, что хранить не пароль, а ХЭШ от него (например md5). а проверять на соответствие хеша, типа $filds->passwordHash==md5($password)

    а так вобщем неплохо. трудоустраивайся, набирайся опыта, удачи во всем
    Большое спасибо. Очень хорошое замечание. Буду впредь опытней


Ответить в теме
Страница 1 из 2 1 2 ПоследняяПоследняя

Похожие темы

  1. Введение в PHP, MySQL
    от Anonymous в разделе Программирование
    Ответов: 81
    Последнее сообщение: 21.03.2015, 02:17
  2. Ответов: 3
    Последнее сообщение: 18.10.2012, 09:25
  3. помогите! PHP -> сохранение страницы с другого хоста
    от [)wad.org в разделе Программирование
    Ответов: 5
    Последнее сообщение: 22.03.2005, 16:25
  4. пмогите!!!!! (php,mysql, while();)
    от Jeno в разделе Программирование
    Ответов: 7
    Последнее сообщение: 23.11.2004, 17:07
  5. Кто у нас программирует на PHP?
    от iFog в разделе Программирование
    Ответов: 23
    Последнее сообщение: 10.03.2004, 17:35

Метки этой темы

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения