Хостинг, который может больше
03.03.2011

Программирование на PHP. Часть 7

Вашему вниманию, уважаемый читатель, предлагается свежий видеоурок на тему программирования посредством фреймворка Kohana.

Сегодня я покажу каким образом подключается и настраивается модуль авторизации, позволяющий существенно упростить разработку сайта.

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

Первое, с чего нужно начать – это подключить данный модуль, под названием auth, в файле kohana\www\application\bootstrap.php

Для нормального функционирования модуля авторизации необходимы еще два модуля: orm и database.  Их тоже нужно включить в файле bootstrap.php

Далее нужно осуществить простенькие настройки файлов конфигурации модуля auth и database.

Поскольку логины и пароли пользователей будут храниться в MySQL базе данных – необходимо ее создать и добавить нового пользователя, который будет взаимодействовать с таблицами этой базы.

Процесс выполнения вышеописанных задач поясняет видеоурок в HD-качестве:

Скачать видеоурок (16.8 МБ, *.wmv)

После настройки и подключения данных модулей я попытался продолжить скринкаст пояснением программного взаимодействия с модулем auth: создал  экземпляр класса авторизации, применил несколько основных его функций.

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

Однако, если вы, уважаемый читатель, уже знакомы с основами программирования на PHP и жаждите срочного продолжения, я опубликую секретный видеоурок специально для вас.

Хочу повторится, в случае, если смысл объяснения от вас неудержимого ускользает – ничего страшного, я опубликую более подробное видео по данному вопросу.

Скачать видеоурок (16 МБ, *.wmv)

<< Предыдущая статья курса      Следующий статья курса >>

С уважением, Андрей Морковин.


Если статья вам понравилась и вы не хотите пропустить свежие публикации, то подписывайтесь на RSS-ленту или получайте обновления сайта на эл. почту.


Похожие материалы:

  • http://ninjacat.ru NinjaCat

    я прямо чувствовал что сегодня будет новое видео

    • Танцор

      Как ты себе аватарку забабахал?

  • http://brand-energy.ru Reexel

    Не знаю, почему вторая часть урока названа неудачной, там все понятно, жаль только нет концовки! Дописывай третьей частью и все :)

    За уроки спасибо!

    • http://www.sdelaysite.com Андрей Морковин

      Кто еще поддержит мнение, что неудачная часть удачна?

      • http://ninjacat.ru NinjaCat

        я, вторая часть вполне удачна

      • Алексей Кулагин

        Абсолютно ничего сложного, если человек не знаком с основами php — вы его все равно не научите. Пока все просто и понятно.
        Смущает одно: = это оператор присваивания, == это оператор равенства.
        Я один раз долго искал ошибку, (поэтому запомнил),оказалось вместо
        if ($var == чему то ), я написал if ($var = чему то )

        • ct

          Если «чему то» — не переменная, то лучше писать
          if (чему то==$var)
          ошибка выползет в браузере и просто ее найти ,))

      • Руслан

        Не заметил неудач!
        Все на высшем уровне!
        Спасибо Вам за Ваши труды!

      • Вадим

        +1 Поддерживаю!

    • http://www.sdelaysite.com Андрей Морковин

      Спасибо, тогда продолжу в том же духе.

      • http://google.com.ua Alex Riz

        Вчера не успел посмотреть, посмотрел сегодня. Как по мне очень удачная «неудачная часть», все было понятно. Так что ждем продолжения.
        Мне единственное не совсем понятно, зачем в конструкции
        $login = Arr::get($_POST, ‘login’, »); в конце пустые кавычки? Ведь если поле логин пустое, то оно и передаст в сценарий пустое поле.

        • Вадим

          Здесь в случае пустого логина — передаст значение по умолчанию — NULL.

          • http://google.com.ua Alex Riz

            Ааааа. Точняк. Спасибо))

        • http://www.sdelaysite.com Андрей Морковин

          Да, если в глобальном массиве POST нет значение login, то в переменную $login запишется то, что в указанно в последних кавычках. В случае приведенного примера — пустое значение.

      • http://tellme.org.ua Yuriy

        Сижу, увлечено разбираю каждое слово.. слышу бормочение: «Вы еще со мной, вы еще со мной..?» слушаю дальше..

        а потом, небольшая пауза, вздох на пол груди: Эхх… курсор замер, а позже не спеша переместился на панель управления камтазии, и тут я замер… «Неужели это все?» — подумал я, шевельнул аккуратно мышкой, и снизу вылезло линия времени и значок, которой находился в самом конце..
        и тут я подумал — Ну как всегда на самом интересном месте.. а ведь мы даже еще и не залогинились…

        • http://google.com.ua Alex Riz

          Это все windows с его «синим экраном» виноват. Ничего скоро залогинемся))))

          • http://brand-energy.ru Reexel

            Кстати, почему не в Linux делаем? Вроде бы он более логичен по отношению к сайтам. Лично я свой буду ставить только на Unix-Linux платформы, так как уже сталкивался с неудобством настройки на Windows. Хотя в данном случае пока не критично…

            • http://www.sdelaysite.com Андрей Морковин

              Я нормальной программы для записи скринкастов под Linux не нашел. Да и основная часть слушателей, как я полагаю, работают именно с Windows.

              • http://google.com.ua Alex Riz

                А я для работы поднял сервер на archlinux в vmware. Настроил ftp, ssh. В общем все как вы нас учили)) Сделал проброс портов, один хост даже в инет рассшарил, а остальные оставил доступными строго в локальной сети. Очень удобная вещь получилась. Таким образом я этот сервер хоть на windows, хоть на linux запустить могу. Так как vmware есть для ubuntu например. А то как по мне, то apache под windows — это ужас просто)
                А чем писать видео в ubuntu где-то встречал, если вспомню, то отпишусь обязательно.

        • http://www.sdelaysite.com Андрей Морковин

          Залогинимся, вопросов нет.

  • Вадим

    Нормальное объяснение. Все понятно. Так держать! Если будут непонятные моменты — слушатели отпишутся в каментах и можно будет выпустить типа поясняющего бонуса. Предугадать все непонятности сразу — сложновато.
    Думаю можно чуть менее развернуто про сам php, т.к. если люди незнакомы с php, то kohana для них на уровне черного ящика…

    • http://www.sdelaysite.com Андрей Морковин

      Да, дать базовые знания и одновременно рассказать принципы работы с Kohana — задача сложная.

      Если будет много неясного выпущу видео по основам PHP отдельным уроком.

      • Танцор

        ВО! Вот это самое то! Мухи отдельно, котлеты отдельно!

  • Вадим

    Я не понял что Вас смутило? На первый взгляд мне показалось, что в ходе объяснения Вы нашли какую-то критическую ошибку в коде. Что это чёрт возьми было:)?

    • http://www.sdelaysite.com Андрей Морковин

      Нет, код рабочий. Смутила сложность объяснения. Но, видимо, напрасно.

  • SkoroDOOM

    Вторая часть вполне нормальная, только такими темпами, я скорее состарюсь, чем научусь чему то. )

    • http://www.sdelaysite.com Андрей Морковин

      Постараюсь увеличить темпы.

  • mix

    Пожалуйста продолжайте. Лучше сложный уровень, подтянутся обязательно.

    • Руслан

      +1

  • kqst

    Андрей, тема не простая. Насколько я понимаю, важно понять общую структуру Kohana и взаимосвязь ее элементов. Тонкости языка PHP — это, наверное, потянет на отдельный курс. Пока все понятно. Спасибо, ждем продолжения.

    • http://www.sdelaysite.com Андрей Морковин

      Да, согласен с Вами.

      • http://tellme.org.ua Yuriy

        ага, пых вообще как язык не логичен.. так что для него можно отдельные курсы записывать, но всему свое время..))

  • Некто

    Прошу автора уделить внимание, в каком нибудь из последующих уроков, методике обновления движка KOHANA, когда выходят новые версии. Можно просто текстовым описанием, не обязательно видео записывать.

  • Sherr

    Мне кажется, что название курса «Программирование на PHP» выбрано не совсем верно, т.к. предполагает объяснение азов программирования. Для человека не знакомого с PHP все уроки из этой серии будут не понятны. А для того, кто имеет какие-то знания по PHP данный урок вполне понятен. Продолжайте в том же духе. А для новичков лучше записать отдельный урок (курс) по программированию на PHP с нуля. Очень бы хотелось увидеть урок по ООП, где будет «разжёвано» что такое ООП и с чем его едят, т.к. информация на эту тему на русском языке довольно скудная.

    • http://tilast.pp.ua/ Ihor

      Є така інформація, досить непогано розписана, в курсі «РНР Проффесионал» від ШП. На торрентах вже є)

      • Руслан

        Сыылку не могли бы скинуть на этот видеокурс?

      • Танцор

        +1 Ссылку в студию!

    • Руслан

      Насчет ООП +1

  • dip

    А у всех после урока ошибку выбивает??

    if($auth->login($login, $password)) в вот этой строке…

    • dip

      Все исправил, забыл точку с запятой поставить в предыдущей строке…

  • Руслан

    шифрование sha256, если кому интересно:

    $pass = hash(‘sha256′,$pass);

  • Виктор

    Андрей, все отлично и даже все понятно. Поддерживаю всех — нужно немного увеличить темп выдачи нового материала. Может быть для полной уверенности вам как нашему педагогу и гуру — в начале урока объяснить кратко урок в виде блок схемы взаимодействия модулей, а уже потом все это разжевывать по полочкам. И урок делать «цельным». Т.е. полностью законченным. В 8-м уроке наверное чуть-чуть недожали. Нужно наверное было довести до конца авторизацию, чтобы мы поигрались с ней и лучше усвоили материал. А в остальном все идет пока даже очень неплохо ( в сравнении с другими авторами видео курсов).
    С нетерпением жду продолжения.

    • http://www.sdelaysite.com Андрей Морковин

      По поводу блок-схемы — это хорошая мысль. Возьму на вооружение.

    • Танцор

      +1 Тоже считаю что блок схема поможет. Во первых каждому программисту они знакомы и понятны. Во второх блок схема в начале урока поможет понять о чём видео. Пользователю легче будет искать нужный материал (когда все уроки будут закончены и нужно будет пересмотреть конкретный), а автору легче будет структурировать урок по этой-же блок схеме. Андрей, раз ты уже готовишься к уроку, то мне кажется не плохо было бы структуру урока продумать заранее и нарисовать на листике. Потом просто подглядывать. И моё пожелание, чтобы в одном видео была освещена одна тема, более или менее законченная.

      P.S. А в общем огромное тебе спасибо. Очень много нового узнаю из твоих уроков. Хорошо рассказываешь. Чувствую себя как на лекции с живым преподавателем. Жаль только вопросы не получается задать. Хотя на твои я отвечаю, получаются забавные диалоги:
      -Вы ещё здесь?
      -Да тут я, куда же я денусь?
      -Вы ещё со мной? Ну хорошо, будем надеяться.

    • Руслан

      +1 Считаю, что блок-схема будет очень полезна в начале урока. Это поможет вкратце понять смысл видеоурока и о чем далее будет рассказываться.

  • Pingback: Kohana и авторизация - Видеоурок

  • Pingback: Контроллер, наследование и вид в Kohana - Видеоурок

  • Олжас

    У меня какая-то бодяга с css файлами, что-то я не то делаю вообщем, если в шаблоне basic.php указать путь до css файла вот такой: css/style.css, то стили отображаются в контролере auth корректно, а в action’ах auth’a нет(auth/logout), а если написать вот так: ../css/style.css, то наоборот, что не так, подскажите?

    • http://www.sdelaysite.com Андрей Морковин

      Нужно написать вот так: /css/style.css

      Первый слеш означает «от корневой папки сайта».

      • Олжас

        Всё равно не работает :( , папка css лежит в корневой папке фреймворка, там же где system,view,assets и др.

        • Виталий

          попробуйте так ./css/style.css

          • Giedrius

            я тоже памучился, а потом заметил что папка css в каталоге application, а должна быть в www. Тогда работает /css/style.css нормално

  • http://ansotov.ru Андрей

    Доброго времени суток.Очень понравился ваш видеоурок по авторизации пользователя.Буду очень признателен если подскажите как сделать chekbox запомнить меня

  • Виталий

    Все ваши видеоуроки хорошие НО! Кроме про ПХП.
    Про пхм хочу сказать вот что. Где вводная часть программирования? Что такое кохана и для чго она нужна? Во всех уроках только кохана и кохана под заголовком Программирование на пхп.

  • Сергей

    Андрей, помоги плиз!
    Не получается авторизация через admin, все делаю согласно урока №7-8:

    Controller_Main:

    logged_in() != 0)
    {
    $data ["message"] = «залогинен»;
    }
    else
    {
    $data ["message"] = «Незалогинен»;
    }
    if (isset($_POST["btnsubmit"]))
    {
    $login = Arr::get($_POST, «login», «»);
    $password = Arr::get($_POST, «password», «»);
    if($auth->login($login, $password))
    {
    $data ["noerror"] = «»;
    }
    else
    {
    $data ["error"] = «»;
    }
    }
    $this->template->content = View::factory («home», $data);
    }
    public function action_hpass()
    {
    $auth = Auth::instance();
    $this->template->content = $auth->hash_password(«admin»);
    }
    public function action_logout()
    {
    $auth = Auth::instance();
    $auth->logout();
    $this->template->content = «Разлогинились»;
    }
    } // End Welcome

    Сonfig Auth:

    ‘file’,
    ‘hash_method’ => ‘sha256′,
    ‘hash_key’ => ’2, 4, 6, 7, 9, 15, 20, 23, 25, 30′,
    ‘lifetime’ => 1209600,
    ‘session_key’ => ‘auth_user’,

    // Username/password combinations for the Auth File driver
    ‘users’ => array(
    ‘admin’ => ’7de9e3fed384f75bfa21907c41defd632cf254fedf5b46fbd3725352fe4d78f5′,
    ),
    );

    Спасибо!

  • Иван

    Раздражает это десятиминутное разжевывание конструкции if ($auth->logged_in

    Тут из кода все понятно в общем-то. Спасибо за уроки, но хотелось бы пожелать побольше сути — поменьше воды. Я просмотрел 7 уроков и каждый можно было сократить минимум вдвое, убрав повторы одного и того же и исключив слова-паразиты, шутки-прибаутки и прочее.

  • Виорел

    Здраствуйте, заинтерисовался уроками Кohana и в 8 уроке тоже проблема с авторизацией нажимаю на кнопку и вылезает надпись
    MODPATH\database\classes\kohana\database\mysql.php [ 108 ]

    protected function _select_db($database)
    104 {
    105 if ( ! mysql_select_db($database, $this->_connection))
    106 {
    107 // Unable to select database
    108 throw new Database_Exception(‘:error’,
    109 array(‘:error’ => mysql_error($this->_connection)),
    110 mysql_errno($this->_connection));
    111 }
    112
    113 Database_MySQL::$_current_databases[$this->_connection_id] = $database;

  • Kostya

    А у меня такая вот проблема: ErrorException [ 2 ]: htmlspecialchars() [function.htmlspecialchars]: Invalid multibyte sequence in argument ~ SYSPATH\classes\kohana\debug.php [ 313 ]. Код перепроверил и даже на всякий случай переписал несколько раз, но та же ошибка. Помогите пожалуйста!

    • Kostya

      Вместо: if ($auth->logged_in() != 0) написал: if($auth!=0) и заработало.

  • Николай

    ругается на это место

    if (isset($_POST['btnsubmit']))
    22
    23 $login = Arr::get($_POST, ‘login’, »);
    24 $password = Arr::get($_POST, ‘password’, »);
    25
    26 if($auth->login($login, $password))
    27 {
    28 $data['noerror'] = »;
    29 }
    30
    31 else {

    что не так?

MAXCACHE: 0.88MB/0.00082 sec