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

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

    По умолчанию Помогите разобратса с 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
    Сообщений
    2,298
    Репутация
    1654
    ну что-то типа такого. Основной смысл в аббревиатуре: контроллер управляет действиями, взаимодействую с базой через модели, также в моделях делаются все необходимые расчеты. Полученные результаты отдаются вьюву, который их отображает в соответствии со своим шаблоном.
    /dev/php

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  19. Вверх #19
    Новичок Аватар для Human Factor
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    43
    Сообщений
    40
    Репутация
    27
    критика по коду:
    в принципе по концепции 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ихаил
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    39
    Сообщений
    64
    Репутация
    12
    Цитата Сообщение от 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, 01:17
  2. Ответов: 3
    Последнее сообщение: 18.10.2012, 08:25
  3. помогите! PHP -> сохранение страницы с другого хоста
    от [)wad.org в разделе Программирование
    Ответов: 5
    Последнее сообщение: 22.03.2005, 15:25
  4. пмогите!!!!! (php,mysql, while();)
    от Jeno в разделе Программирование
    Ответов: 7
    Последнее сообщение: 23.11.2004, 16:07
  5. Кто у нас программирует на PHP?
    от iFog в разделе Программирование
    Ответов: 23
    Последнее сообщение: 10.03.2004, 16:35

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

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

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

Ваши права

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