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


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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



ЛАБОРАТОРНАЯ РАБОТА №5

РАЗРАБОТКА НА PHP СРЕДСТВ АДМИНИСТРИРОВАНИЯ, ОБЕСПЕЧИВАЮЩИХ РЕГИСТРАЦИЮ И ВХОД ПОЛЬЗОВАТЕЛЕЙ НА САЙТ.

 

Цель работы: Научиться использовать функции доступа к данным СУБД MySQL и сессии для организации, хранения и обработки информации на сайте.

Теоретические сведения

Работа с данными в СУБД MySQL

Предположим, что имеется текстовый файл, содержащий список товаров, которые продаются организацией. Можно написать PHP-сценарий, который для построчного считывания списка товаров многократно вызывает функцию fgets(). Затем, после каждого очередного считывания, вызывается инструкция echo или встроенная функцию print(). В результате будет создана веб-страница, содержащая список предлагаемых товаров. Таким образом, РНР и текстовые файлы можно использовать для создания содержимого веб-страницы на лету.

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

Поиск по текстовому файлу, содержащему несколько тысяч пар имен пользователей и паролей, занимает недопустимо длительное время. В то же время СУБД позволяет выполнить поиск такого же объема (среди десятков тысяч записей) в течение долей секунды. Поэтому СУБД дает возможность вывести на экран список товаров или одного товара (выбранного из длинного списка) гораздо быстрее, чем при использовании текстового файла со списком товаров.

Практически вся работа по созданию баз данных на сервере базы данных, созданию и модификации таблиц в них, наполнению, редактированию и удалению данных из таблиц баз данных и, наконец, считыванию, фильтрации и упорядочиванию получаемых данных осуществляется с помощью описанной ранее функции mysql_query(), обеспечивающей интерфейс для обращения с запросами к базам данных:

 

int mysql_query(string запрос[, int ид_соединения])

 

Аргумент запрос содержит текст запроса на языке SQL. Если обработка запроса завершилась неудачей, функция возвращает FALSE. Ниже описывается применение этой PHP-функции для выполнения различных команд языка структурированных запросов SQL:

CREATE – создать базу данных или таблицу;

INSERT – добавить запись данных в таблицу;

SELECT – получить запись данных из таблицы;

UPDATE – обновить запись данных в таблице;

DELETE – удалить запись данных из таблицы.

 

Создание базы данных

Для создания базы данных нужно воспользоваться SQL-командой CREATE DATABASE, синтаксис которой следующий:

 

CREATE DATABASE имя_базы_данных

 

На языке PHP создание новой базы данных с именем «database1» для уже открытого соединения $link1будет выглядеть следующим образом:

 

$query = "CREATE DATABASE database1"

$result = mysql_query($query, $link1);

 

Если работа с сервером СУБД ведется только через одно соединение, то при вызове функции mysql_query() ссылку на него можно опустить.

 

Сессии (сеансы) в PHP

Сессии и cookies предназначены для хранения сведений о пользователях при переходах между несколькими страницами. При использовании сессий данные сохраняются во временных файлах на сервере. Файлы с cookies хранятся на компьютере пользователя, и по запросу отсылаются броузером серверу.

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

Протокол HTTP является протоколом "без сохранения состояния". Это означает, что данный протокол не имеет встроенного способа сохранения состояния между двумя транзакциями. Т. е., когда пользователь открывает сначала одну страницу сайта, а затем переходит на другую страницу этого же сайта, то основываясь только на средствах, предоставляемых протоколом HTTP невозможно установить, что оба запроса относятся к одному пользователю. Т. о. необходим метод, при помощи которого было бы отслеживать информацию о пользователе в течение одного сеанса связи с Web-сайтов. Одним из таких методов является управление сеансами при помощи предназначенных для этого функций. Для нас важно то, что сеанс по сути, представляет собой группу переменных, которые, в отличие от обычных переменных, сохраняются и после завершения выполнения PHP-сценария.

При работе с сессиями различают следующие этапы:

• открытие сессии,

• регистрация переменных сессии и их использование,

• закрытие сессии.

 

Открытие сессии

Самый простой способ открытия сессии заключается в использовании функции

 

bool session_start();

 

которая вызывается в начале PHP-сценария.

Эта функция проверяет, существует ли идентификатор сессии, и, если нет, то создает его. Если идентификатор текущей сессии уже существует, то загружаются зарегистрированные переменные сессии.

 

Закрытие сессии

 

После завершения работы с сессией сначала нужно разрегистрировать все переменные сессии, а затем вызвать функцию unset():

 

unset($_SESSION["username"]);

 

Пример простой сессии

Рассмотрим пример простой сессии, работающей с тремя страницами. При посещении пользователем первой страницы открывается сессия и регистрируется переменная $username.:

 

<?

session_start();

$_SESSION['username'] = "maksim";

echo 'Привет, '.$_SESSION['username']."<br>";

?>

<a href="page2.php">На следующую страницу </a>

 

После этого, пользователь maksim нажимает на ссылку и попадает на страницу page2.php, код которой приведен в листинге:

 

<?

session_start();

echo $_SESSION['username'].', Вы пришли на другую страницу этого сайта!';

echo("<br>");

?>

<a href="page3.php">На следующую страницу </a>

 

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

 

<?

session_start();

unset($_SESSION['username']); // разрегистрация переменной

echo 'Привет, '.$_SESSION['username'];

/* теперь имя пользователя уже не выводится */

session_destroy(); // разрушение сессии

?>

Задание

Разработать форму входа пользователей на сайт, регистрационную форму и форму приветствия пользователя в соответствии с вариантом задания (табл. 1) и примерами первых двух форм, приведенных ниже.

Рисунок 1. Пример формы входа на сайт

На рисунке приведен минимум информации, которая должна содержаться на форме входа. Программа на PHP должна проверить правильность ввода информации в поля ввода и, если она введена правильно, найти запись с данными регистрации данного пользователя в таблице регистрации в СУБД, сравнить введенный пароль со значением пароля, хранящегося в таблице регистрации.

Если пароль введен правильно, отобразить в браузере форму приветствия с контентом по усмотрению студента. Как минимум, эта форма должна содержать таблицу с данными из СУБД, вывод которой был предусмотрен в лабораторной работе №4.

Если логин и/или пароль введены неправильно, то нужно сообщить об этом пользователю и предложить ему повторно ввести данные или же предложить ему зарегистрироваться с помощью гиперссылки «Регистрация».

На рис. 2 показан пример формы регистрации. Если при регистрации пользователь ввел синтаксически правильную информацию, нужно проверить, что в СУБД отсутствует информация о пользователе с указанным логином. Если это так, добавить новую запись в таблицу регистрации пользователей СУБД.

 

Рисунок 2. Пример регистрационной формы

Если же информация с указанным логином уже имеется в СУБД, нужно запросить пользователя о необходимости подтверждения коррекции информации, содержащейся в СУБД. После подтверждения пользователем такой коррекции, нужно обновить те данные, которые он ввел в форму регистрации. При этом обязательным условием коррекции информации пользователя является ввод правильного пароля. (Для этого необходимо предусмотреть возможность пересылки пользователю его пароля по электронной почте).

Если регистрация прошла успешно, отобразить в браузере форму приветствия с контентом по усмотрению студента.

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

Требования к форме:

1. Во всех полях выполнять проверку на пустое поле.

2. Поля "Фамилия", "Имя", "Отчество" должны содержать только буквы.

3. Поля "Фамилия", "Имя", "Отчество" - автоматическая смена регистра букв по маске Ххххххх. Внимание! Строковые функции по автоматической смене регистра букв некорректно работают с кириллицей.

4. Поле "Адрес E-mail" - Автоматическая смена регистра на маленький. Проверка на присутствие пробела, символа @ и точки.

5. Поле "Телефон" должно содержать только цифры.

6. Поле "Логин" - количество символов в логине от 4-х до 8-ми. В логине должны использоваться только символы "a-z". Автоматическая смена регистра на маленький.

7. Поле "Пароль" - Введенные данные должны соответствовать полю "Повтор пароля". Количество введенных символов от 6-ти до 10-ти.

8. Проверить корректность заполнения не названных выше полей в соответствии с вариантом.

9. Вывести либо сообщение об ошибке, либо текст «Вы ввели такие данные:…»

Таблица 1 – Варианты заданий

№ варианта Поля регистрационной формы
  Название: «Регистрационная форма студента, желающегопринять участие в курсе обучения, проводимом компанией такой-то » Поля:   Фамилия Имя Отчество Телефон контактный Телефон мобильный Адрес электронной почты Страна (выпадающий список с вариантами) Информация об учебном заведении: Название Город  
  Регистрационная форма участника международной конференции «…» Поля формы:   Фамилия Имя Отчество Организация должность ученая степень (выпадающий список с вариантами: к.т.н., д.т.н., нет) Нужна ли гостиница? (радиокнопки: да, нет)
  Регистрационная форма участника семинара «…»   Фамилия Имя Дата рождения (день, месяц, год) Пол (варианты ответа с радиокнопками) Номер паспорта Место работы Тема выступления на семинаре  
  Регистрационная форма Поля:   ФИО Должность Телефон Факс E-mail Почтовый адрес Почтовый индекс
  Семинар «Проблемы теоретической физики», посвященный 100-летию со дня рождения Л.Д. Ландау Поля:   Фамилия Имя Отчество Должность Организация Адрес организации Электронный адрес Дата приезда Гостиница (нужна / не нужна - радиокнопки)  
  Регистрационная форма для студентов-участников проекта такого-то:   Группа ФИО Контактная информация: e-mail телефон (моб) телефон (дом) Сообщите, какие оценки Вы получили на экзаменах по следующим дисциплинам: линейная алгебра математический анализ теория вероятностей математическая статистика (ответы либо в виде списка, либо радиокнопки)  
  Поля в регистрационной форме, приведенной на рис. 1  

 

ЛАБОРАТОРНАЯ РАБОТА №5

РАЗРАБОТКА НА PHP СРЕДСТВ АДМИНИСТРИРОВАНИЯ, ОБЕСПЕЧИВАЮЩИХ РЕГИСТРАЦИЮ И ВХОД ПОЛЬЗОВАТЕЛЕЙ НА САЙТ.

 

Цель работы: Научиться использовать функции доступа к данным СУБД MySQL и сессии для организации, хранения и обработки информации на сайте.

Теоретические сведения



Поделиться:


Последнее изменение этой страницы: 2017-02-06; просмотров: 406; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.221.85.33 (0.029 с.)