<
  • Главная
Статьи

Реальні веб-проекти на PHP і MySQL. Розробка поштової служби з веб-інтерфейсом: Частина 3. Реалізація входу і виходу з системи

  1. Серія контенту:
  2. Цей контент є частиною серії: Реальні веб-проекти на PHP і MySQL. Розробка поштової служби з веб-інтерфейсом
  3. 1. Введення
  4. Початок роботи при вході в систему
  5. Малюнок 1.
  6. Малюнок 2.
  7. висновки
  8. Ресурси для скачування

Реальні веб-проекти на PHP і MySQL. Розробка поштової служби з веб-інтерфейсом

Серія контенту:

Цей контент є частиною # з серії # статей: Реальні веб-проекти на PHP і MySQL. Розробка поштової служби з веб-інтерфейсом

https://www.ibm.com/developerworks/ru/library/?series_title_by=**auto**

Слідкуйте за виходом нових статей цієї серії.

Цей контент є частиною серії: Реальні веб-проекти на PHP і MySQL. Розробка поштової служби з веб-інтерфейсом

Слідкуйте за виходом нових статей цієї серії.

1. Введення

У попередніх статтях багаторазово описувалися питання настройки і запуску в експлуатацію найрізноманітніших поштових служб, - таких як sendmail, postfix, exim, Communigate, qmail, що використовують в якості платформи найширший спектр сучасних Linux- і BSD-систем. В даний час, у міру розвитку Всесвітньої Павутини все частіше виникає питання про актуальність користуватися послугами електронної пошти, заснованої на веб. В попередніх частинах циклу статей були розглянуті питання щодо загального плану побудови поштової системи з веб-інтерфейсом, створення бази даних під навчальний проект і огляду загальної бібліотеки функцій для вирішення завдань обробки пошти. Крім того, ми розібрали головний керуючий сценарій системи. Третя стаття циклу присвячена питанням реалізації механізмів аутентифікації і авторизації користувачів.

Початок роботи при вході в систему

При завантаженні користувачем початковій сторінки (index.php) у нього в браузері повинна відображатися сторінка, показана на рис.1. Це головна або стартова сторінка сайту. Якщо користувачем не вибрано жодна дія (при цьому, значення змінної action не встановлено) і не надані дані для здійснення входу в систему, необхідно виконати частини коду, що наводяться нижче. Цей етап, як етап попередніх операцій передбачає виконання таких дій:

include ( 'include_fns.php'); session_start ();
Малюнок 1.

Дані рядка запускають механізм сеансу, який буде використаний для відстеження змінних сеансу $ auth_user і $ selected_account. Ці змінні будуть брати участь в процесі роботи сценарію трохи пізніше.

Потім створюються короткі імена змінних, як і в кожному сценарії обробки форми. Залежно від того, де це відбувається, така змінна може бути або типу GET, або POST змінної. Після цього значення змінної витягується з масиву $ _REQUEST. Такі ж дії треба проводити і зі змінною account, оскільки доступ до неї здійснюється зазвичай за допомогою методу GET. Якщо видалити обліковий запис доступ до змінної здійснюється через метод POST.

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

$ Buttons = array ();

потім встановлюються кнопки, які відображаються на сторінці:

// Створити кнопки, які будуть виводитися в панелі інструментів $ buttons [0] = 'view-mailbox'; $ Buttons [1] = 'new-message'; $ Buttons [2] = 'account-setup'; // Кнопка виходу з системи потрібна, тільки якщо був здійснений вхід

Якщо в подальшому користувач буде входити на сайт з правами адміністратора, то кількість відображуваних кнопок і їх відповідність визначеним функціоналу будуть змінюватися.

На другому етапі створюється нескладний заголовок:

// Вивести заголовок з назвою програми та описом сторінки або дії do_html_header ($ _ SESSION [ 'auth_user'], "Безпечна і швидка пошта -" .format_action ($ action), $ _SESSION [ 'selected_account']); } Else {// Вивести заголовок з одним лише назвою додатка do_html_header ($ _ SESSION [ 'auth_user'], "Безпечна і швидка пошта", $ _SESSION [ 'selected_account']); } Display_toolbar ($ buttons);

Цим кодом виводиться рядок заголовка і панель інструментів з кнопками, як показано на рис.1.

Функції, які працюють в цьому фрагменті коду, знаходяться в бібліотеці output_fns.php. Функція do_html_header () має вигляд:

function do_html_header ($ auth_user, $ title = '', $ selected_account) {// Виводить HTML-заголовок, включаючи крутий [] логотип :) global $ table_width; // Виводить зону заголовка?&gt; <Html> <head> <title> <? Php echo $ title; ?> </ Title> <style> h1 {font-family: 'Comic Sans MS ", sans-serif; font-size: 32; font-weight: bold; color: black; margin-bottom: 0} b {font-family: 'Arial', sans-serif; font-size: 13; font-weight: bold; color: black} th {font-family: 'Comic Sans MS ", sans-serif; font-size: 18 font-weight: bold; color: black; } Body, li, td {font-family: Arial, Helvetica, sans-serif; font-size: 12; margin = 5px} a {color: # 000000} </ style> </ head> <body> <table width = <? php echo $ table_width; ?> Cellspacing = 0 cellpadding = 3 bgcolor = "# ff6600" border = 0> <tr bgcolor = "# ff6600"> <td bgcolor = "# ff6600" width = 103> <img src = "images / warm-mail. gif "width = 103 height = 45 alt =" "valign =" middle "/> </ td> <td bgcolor =" # ff6600 "width = <? php echo ($ table_width-110);? &gt;> <h1> <? php echo $ title;?&gt; </ h1> </ td> <? php // Включати кнопку вибору облікового запису, тільки якщо користувач має їх кілька if (number_of_accounts ($ auth_user)> 1) {echo '<form target = "index.php? action = open-mailbox" method = "post"> '; echo '<td bgcolor = "# ff6600" align = "right" valign = "middle">'; display_account_select ($ auth_user, $ selected_account); echo '</ td>'; echo '</ form>'; }?> </ Tr> </ table> <table width = <? Php echo $ table_width;?> Cellpadding = 0 cellspacing = 0 border = 0> <tr> <td> <? Php}

і функція display_toolbar ():

function display_toolbar ($ button, $ extra_parameters = '') {// Виводить панель інструментів global $ table_width; echo "<table width = $ table_width cellpadding = 0 cellspacing = 0 border = 0>"; echo '<tr>'; echo '<td bgcolor = "#cccccc" align = "center">'; for ($ i = 0; $ i <5; $ i ++) {if ($ button [$ i]) display_button ($ button [$ i], $ extra_parameters); else display_spacer (); } Echo '</ td>'; echo '</ tr>'; echo '</ table>'; }

Далі за кодом потік виконання переходить до наступного фрагменту:

if (! check_auth_user ()) {echo '<p> Ви повинні спочатку увійти в систему'; if ($ action && $ action! = 'log-out') echo 'і потім переходити на' .format_action ($ action); echo '. </ p> <br /> <br />'; display_login_form ($ action); }

сама функція check_auth_user () входить в бібліотеку, яка має вигляд:

<? Php function login ($ username, $ password) // Перевіряє наявність імені користувача і пароля в базі даних. // Ести це так, повертає значення true, // в іншому випадку - false. {// Підключитися до бази даних $ conn = db_connect (); if (! $ conn) return false; $ Result = $ conn-> query ( "select * from users where username = '$ username' and password = sha1 ( '$ password')"); if (! $ result) return false; if ($ result-> num_rows> 0) return true; else return false; } Function check_auth_user () // Перевіряє, увійшов відвідувач в систему, і повідомляє його, якщо немає {if (isset ($ _ SESSION [ 'auth_user'])) return true; else return false; }?>

вона використовується для перевірки того, увійшов користувач в систему чи ні. Якщо не увійшов, то відображається форма для вхідних реєстрації (див. Рис.1). Ця форма генерується функцією display_login_form (), яка має вигляд:

function display_login_form ($ action) {// Виводить форму, яка запитує ім'я користувача та пароль?> <center> <form method = "post" action = "index.php? action = <? php echo $ action;?>"> < table bgcolor = '# cccccc' border = 0 cellpadding = 6 cellspacing = 0> <tr> <th colspan = 2 bgcolor = '# ff6600'> Вхід в систему </ th> </ tr> <tr> <td> Ім'я користувача: </ td> <td> <input type = "text" name = "username"> </ td> </ tr> <tr> <td> Пароль: </ td> <td> <input type = " password "name =" passwd "> </ td> </ tr> <tr> <td colspan = 2 align =" center "> <? php display_form_button ( 'log-in'); ?> </ Td> </ tr> <tr> </ table> </ form> </ center> <? Php}

При правильному заповненні форми і клацнути на кнопці "Log in" відображається сторінка, представлена ​​на рис.2. В цьому випадку будуть активізовані різні ділянки головного сценарію. Якщо заповнені поля в формі вхідний реєстрації $ username і $ password, то активується наступну ділянку коду:

// Необхідно спочатку обробити запити на вхід і вихід з системи if ($ username || $ password) {if (login ($ username, $ passwd)) {$ status. = '<P> Ви успішно увійшли в систему. </ p> <br /> <br /> <br /> <br /> <br /> <br /> '; $ _SESSION [ 'auth_user'] = $ username; if (number_of_accounts ($ _ SESSION [ 'auth_user']) == 1) {$ accounts = get_account_list ($ _ SESSION [ 'auth_user']); $ _SESSION [ 'selected_account'] = $ accounts [0]; }} Else {$ status. = '<P> Вибачте, вхід в систему з такою назвою користувача і паролем неможливий. </ P> <br /> <br /> <br /> <br /> <br /> < br /> '; }}

тут використовується функція login (), розглянута вище по тексту (див. function login ($ username, $ password)).

Малюнок 2.

Якщо все проходить вдало, то ім'я користувача реєструється в змінної сеансу auth_user.

Крім відображаються кнопок, представляються кнопки, що дають можливість користувачеві вийти з системи:

if (check_auth_user ()) {$ buttons [4] = 'log-out'; }

На наступному етапі, пов'язаному з формуванням заголовків, знову відображаються заголовки і кнопки, і виводиться повідомлення стану, створене раніше - echo $ status;

Потім виводиться нижній колонтитул do_html_footer ();

function do_html_footer () {// Виводить завершальні HTML-дексріптори global $ table_width; ?> </ Td> </ tr> </ table> <table width = <? Php echo $ table_width;?> Cellspacing = 0 cellpadding = 6 border = 0> <tr> <td bgcolor = "# ff6600" align = right> <img src = "images / warm-mail.gif" width = 103 height = 45 alt = "" valign = "middle" /> </ td> </ tr> </ table> </ body> </ html> <? php}

і починається процес очікування введення користувачем наступних дій.

висновки

У третій статті циклу, детально розглянуті питання загальної структури створюваної поштової системи з веб-інтерфейсом і порядку її функціонування. Наведено і описані фрагменти коду головного керуючого сценарію системи, що відповідають за організацію входу і виходу користувачів. Розглянуто функції формування титульної сторінки, виведення верхнього і нижнього колонтитула. Описана структура сценарію, і його складові частини в контексті реалізації входу - виходу користувачів. Наведено і описані задіяні в роботі функції. Оглядово розглянуто логічний порядок роботи частин сценарію, показано для чого і як вони функціонують, що є джерелом ініціалізації тих чи інших подій в роботі. Наведено знімки екрану, що пояснюють роботу сценаріїв і окремих ділянок коду.

В наступній статті буде детально вивчена реалізація механізму створення користувачів системи і маніпулювання їх обліковими записами.

Ресурси для скачування

Схожі теми

Підпишіть мене на повідомлення до коментарів

Com/developerworks/ru/library/?
Gt; <Html> <head> <title> <?
Php echo $ title; ?
Php echo $ table_width; ?
Gif "width = 103 height = 45 alt =" "valign =" middle "/> </ td> <td bgcolor =" # ff6600 "width = <?
Php echo ($ table_width-110);?
Gt;> <h1> <?
Php echo $ title;?
Gt; </ h1> </ td> <?


Новости
  • Виртуальный хостинг

    Виртуальный хостинг. Возможности сервера распределяются в равной мере между всеми... 
    Читать полностью

  • Редизайн сайта

    Редизайн сайта – это полное либо частичное обновление дизайна существующего сайта.... 
    Читать полностью

  • Консалтинг, услуги контент-менеджера

    Сопровождение любых интернет ресурсов;- Знание HTML и CSS- Поиск и обновление контента;-... 
    Читать полностью

  • Трафик из соцсетей

    Сравнительно дешевый способ по сравнению с поисковым и контекстным видами раскрутки... 
    Читать полностью

  • Поисковая оптимизация

    Поисковая оптимизация (англ. search engine optimization, SEO) — поднятие позиций сайта в результатах... 
    Читать полностью