Файл: Обеспечение аутентификации и авторизации пользователей в web-приложении.pdf
Добавлен: 03.07.2023
Просмотров: 127
Скачиваний: 4
Введение
Цель работы: изучить и обеспечить возможность аутентификации и авторизации пользователей в web-приложении.
В ходе выполнения данной работы, необходимо решить следующие задачи:
- Ознакомится в возможностями СУБД MySQL и изучить некоторые SQL-запросы;
- Рассмотреть синтаксис языка PHP и лучше узнать механизм сессий;
- Разобраться с принципами аутентификации и авторизации пользователей в web-приложении.
В первой главе рассматриваются вопросы работы с базой данных MySQL и демонстрируется синтаксис языка SQL.
Вторая глава – основы языка PHP, посвящена рассмотрению простых PHP-скриптов, а также ознакомлению с основами синтаксиса языка и его стандартных функций.
В третьей главе описываются возможности реализации аутентификации и авторизации пользователей в web-приложении.
Список основных источников, используемых для написания курсовой работы:
- Изучаем PHP и MySQL. – Пер. с англ. / Дэвис Е.М., Филлипс Д.А., 2008. – 448 с.
- Разработка веб-приложений с помощью PHP и MySQL. – Пер. с англ. / Веллинг Л., Томсон Л., 2010. – 848 с.
PHP и MySQL. Исчерпывающее руководство. 2-е изд. / Маклафлин Б. – СПб.: Питер, 2014. – 544 с.
PHP. Практика создания Web-сайтов / Кузнецов М.В., Симдянов И.В. – СПб.: БХВ-Петербург, 2009. – С. 1264.
PHP и MySQL. От новичка к профессионалу / Кевин Янк. – М.: Эксмо, 2013. – 384 с.
Вся используемая литература является достаточно надежной, так как опубликовывалась в известных издательствах.
Предметом курсовой работы является механизм сессий и сеансов, которые позволяют реализовать аутентификацию и авторизацию пользователей в web-приложении.
1. Работа с базой данных
База данных – это инструмент, позволяющий хранить информацию, получать ее по мере надобности и систематизировать хранящуюся информацию. Разновидностью реальной базы данных является металлический картотечный шкаф. В него можно помещать документы, из него можно их извлекать, а также использовать папки и ярлыки для систематизации документов.[1]
В настоящее время ни одно серьезное Web-приложение не может обойтись без работы с базой данных, обеспечивающей почти безграничные возможности манипулирования данными: сортировка, поиск, преобразование, редактирование и многое другое. При этом все низкоуровневые операции с файловой системой скрыты от программиста за несложными SQL-запросами. Работа с базой данных имеет как свои преимущества, так и недостатки. К достоинствам можно отнести значительное (иногда в 2-3 раза) снижение объема кода по сравнению с файловыми вариантами Web-приложений, что сокращает время разработки и упрощает процесс отладки. К недостаткам можно отнести зависимость приложения не только от работоспособности Web-сервера, но и от работоспособности сервера баз данных.[2]
База данных включает одну или несколько таблиц, каждая из которых содержит список элементов, или сущностей. Исходя из этого, начнем работу с создания таблицы под названием joke (шутка), которая будет содержать тексты шуток. Любая таблица в базе данных состоит из одного или нескольких столбцов, или полей. Каждый такой столбец хранит определенный фрагмент информации. Наша таблица joke может состоять из двух столбцов: в первом будут храниться тексты с шутками, во втором – даты их добавления в базу данных.[3]
Каждая такая шутка рассматриваться как строка, или запись. Описанные строки и столбцы формируют таблицу (рисунок 1).
Рисунок 1 – Таблица базы данных, содержащая тексты шуток
Обратим внимание, что помимо столбцов с текстами шуток (joketext) и датами их добавления (jokedate), есть еще один столбец id. Дело в том, что в таблицах базы данных каждая строка должна иметь однозначную идентификацию – это признак хорошего тона. Может оказаться так, что в одно и то же время в базу будут добавлены две одинаковые шутки, тогда при выводе отдельной шутки нельзя полагаться на столбцы joketextи jokedate. В столбце id каждой шутке присваивается уникальный номер, который помогает ссылаться на нее и отличать ее от других.[4]
В последнее время СУБД MySQL стала стандартом де-факто, благодаря своей надежности, производительности, низкой стоимости, простоте установки, настройки и обслуживания.[5]
MySQL считают одной из самых распространенных баз данных, применяемых в веб-приложениях. Ее частое применение обусловлено так же простотой получения и использования.
Простота применения сопровождается некоторыми компромиссами. Существуют довольно дорогие и сложные в использовании базы данных вроде Oracle. Но такие базы данных обычно предлагают свойства, которых нет в таких программах, как MySQL..[6]
1.1. Введение в СУБД и SQL
Системы управления базами данных (СУБД) предназначены для управления большими объемами данных. По сути, база данных – это те же файлы, в которых хранится информация. Сами по себе базы данных не представляли бы никакого интереса, если бы не было систем управления базами данных, сокращенно – СУБД. СУБД – это программный комплекс, который выполняет все низкоуровневые операции по работе с файлами базы данных, оставляя программисту оперировать логическими конструкциями при помощи языка программирования.
База данных – это файловое хранилище информации, и не более. Программные продукты типа MySQL, Oracle, Dbase, Informix, PostgreSQL и др. – это системы управления базами данных (СУБД). Базы данных везде одинаковы – это файлы с записанной в них информацией. Все указанные программные продукты отличаются друг от друга способом организации работы с файловой системой. Однако для краткости эти СУБД часто называют просто базами данных. Следует учитывать, что когда мы будем говорить «база данных» – речь будет идти именно о СУБД.[7]
SQL – стандартный язык, который служит для взаимодействия со множеством баз данных. Даже если вы в будущем перейдете с MySQL на программу вроде Microsoft SQL Server, то обнаружите, что большая часть команд выглядит одинаково. Важно понять разницу между SQL и MySQL: MySQL – сервер баз данных, который вы используете, а SQL – язык, с помощью которого осуществляется взаимодействуете с этими базами данных.[8]
Язык программирования, с помощью которого пользователь общается с СУБД (или, как говорят, «осуществляет запросы к базе данных»), называется SQL (Structured Query Language, структурированный язык запросов).
Несмотря на то, что SQL называется «языком запросов», в настоящее время этот язык представляет собой нечто большее, чем просто инструмент для создания запросов. С помощью SQL осуществляется реализация всех возможностей, которые представляются пользователям разработчиками СУБД, а именно:
- выборка данных (извлечение из базы данных содержащейся в ней информации);
- организация данных (определение структуры базы данных и установление отношений между ее элементами);
- обработка данных (добавление/изменение/удаление);
- управление доступом (ограничение возможностей ряда пользователей на доступ к некоторым категориям данных, защита данных от несанкционированного доступа);
- обеспечение целостности данных (защита базы данных от разрушения);
- управление состоянием СУБД.[9]
SQL не является специализированным языком программирования, то есть, в отличие от языков высокого уровня (РНР, C++, Pascal и т. д.), с его помощью невозможно создать полноценную программу. Все запросы выполняются либо в специализированных программах, либо из прикладных программ при помощи специальных библиотек.[10]
Несмотря на то, что язык запросов SQL строго стандартизирован, существует множество его диалектов: по сути, каждая база данных реализует свой собственный диалект со своими особенностями и ключевыми словами, недоступными в других базах данных. Кроме того, рынок реляционных баз данных оперирует сотнями миллиардов долларов в год, все компании находятся в жесткой конкуренции и постоянно совершенствуют свои продукты. Поэтому, когда дело доходит до принятия стандартов, базы данных уже имеют реализацию той или иной особенности, и комиссии по стандартам в условиях жесткого давления приходится выбирать в качестве стандарта решение одной из конкурирующих фирм.[11]
Помимо сообщения базе данных о том, какую информацию нужно сохранить для себя и своих программ, вы также сообщаете, как эта информация подключается к другим информационным частям. приходится не только пользоваться этой сетью подключений, но и сообщать базе данных о том, как именно должна быть сконструирована эта сеть.[12]
Теория реляционных баз данных была разработана доктором Коддом из компании IBM в 1970 году. Одной из задач реляционной модели была попытка упростить структуру базы данных. В ней отсутствовали явные указатели на предков и потомков, а все данные были представлены в виде простых таблиц, разбитых на строки и столбцы, на пересечении которых расположены данные.
Можно кратко сформулировать особенности реляционной базы данных:
- Данные хранятся в таблицах, состоящих из столбцов и строк.
- На пересечении каждого столбца и строки находится только одно значение.
- У каждого столбца есть свое имя, которое служит его названием, и все значения в одном столбце имеют один тип. Например, в столбце id cataiog все значения имеют целочисленный тип, а в столбце name – текстовый.
- Столбцы располагаются в определенном порядке, который задается при создании таблицы, в отличие от строк, которые располагаются в произвольном порядке. В таблице может не быть ни одной строки, но обязательно должен быть хотя бы один столбец.
- Запросы к базе данных возвращают результат в виде таблиц, которые тоже могут выступать как объект запросов.
Рисунок 2 – Таблица реляционной базы данных
На рисунке 2 приведен пример таблицы catalogs базы данных электронного магазина изделий компьютерных комплектующих, которые подразделяются на разделы. Каждая строка этой таблицы представляет собой один вид товарных позиций, для описания которой используется поле id cataiog – уникальный номер раздела, паше – название раздела. Столбцы определяют структуру таблицы, а строки – количество записей в таблице. Как правило, одна база данных содержит несколько таблиц, которые могут быть как связаны друг с другом, так и независимы друг от друга.[13]
1.2 Основные команды пакета MySQL
У MySQL есть собственный интерфейс для организации взаимодействия с клиентами, с помощью которого можно перемещать данные и изменять параметры базы данных.[14]
Создать базу данных MySQL очень просто. Откроем окно для ввода SQL-запросов и наберем следующую команду.
CREATE DATABASE base_data
Назовем базу данных base_data. Хотя возможно выбрать любое другое название. Кроме служебных слов MySQL.[15]
В СУБД MySQL создание базы данных сводится к созданию нового подкаталога в каталоге данных. По умолчанию для пользователей операционной системы Windows это каталог C:\mysql5\data, для пользователей RedHatориентированных дистрибутивов Liпuх - /varlib/mysql. Далее, упоминая путь C:\mysql5\data, мы будем иметь в виду каталог данных, который, в общем случае, не обязательно должен располагаться в каталоге C:\mysql5\data.[16]
Синтаксис оператора CREATE TABLE выглядит следующим образом:
CREATE TABLE users (
user_id int,
first_name varchar(20),
last_name varchar(30),
email varchar(50),
facebook_url varchar(100),
twitter_handle varchar(20)
);
Рассмотрим, что происходит в команде CREATE.
- CREATE сообщает MySQL, что вы хотите создать в базе данных новую структуру.
- TABLE сообщает MySQL, какого рода структуру нужно создать. В данном случае нужна таблица.
- users является именем создаваемой таблицы.[17]
- Открывающая круглая скобка (говорит MySQL о том, что вы собираетесь дать построчное описание создаваемой таблицы.
- В каждой строке имеется имя столбца, например user_id, и тип, например, int или varchar(20).
- После завершения описания таблицы используется закрывающая круглая скобка ), оповещающая MySQL об этом завершении, а затем вся эта порция кода завершается точкой с запятой.[18]
Чтобы вывести список доступных баз данных, введите команду:
mysql> SHOW DATABASES;
В нашем случае она вернет:[19]
+-------------------------------+
| Database |
+-------------------------------+
| information_schema |
| mysql |
| users |
| base_data |
+-------------------------------+
Таблицы information_schema и mysql являются служебными таблицами MySQL, которые нужны для функционирования сервера баз данных. Причем, база данных mysql – реальная база данных, а information_schema является виртуальной.
Удаление базы данных происходит при помощи команды DROP DATABASE <имя базы данных>.[20]
Для определения структуры новой таблицы базы данных служит команда CREATE TABLE. Когда создается таблица базы данных, каждый столбец может содержать дополнительные параметры, помимо имени и типа данных. Если при добавлении новой записи в таблицу поле не должно оставаться пустым, в его определении указывается ключевое слово NOT NULL. Ключевое слово PRIMARY KEY определяет, какое поле будет использоваться в качестве первичного ключа. Автоматическое заполнение ключевого поля можно определить с помощью ключевого слова AUTO_INCREMENT.