Файл: Обеспечение аутентификации и авторизации пользователей в web-приложении.pdf
Добавлен: 03.07.2023
Просмотров: 125
Скачиваний: 4
Чтобы создать эти таблицы, необходимо выполнить следующий код с помощью клиента командной строки MySQL.
Код примера создания таблицы books:
CREATE TABLE books (
title_id INT NOT NULL AUTO_INCREMENT,
title VARCHAR (150),
pages INT,
PRIMARY KEY (title_id));[21]
Описание полученных результатов:
- Первый столбец называется title_id и имее целочисленный тип.
- Ключевое слово auto_incrementобеспечивает уникальность значений этого поля, генерируемых автоматически в процессе вставки новых записей;
- Столбец title предназначен для хранения текста длиной до 150 сим-волов;
- Столбец pages является целым числом;
- Ключевое слово PRIMARY KEY сообщает MySQL, какое поле будет играть роль первичного ключа.
Для всего, что позволяют сделать MySQL и SQL, есть способ совершения обратного действия. Вы создали таблицу, но можете ее и удалить. Делается это не с помощью команды delete(удалить), а посредством команды DROP.
mysql> DROP TABLE users;[22]
На данный момент была создана таблица users. Однако в ней до сих пор нет ничего, что требовало бы исправления ситуации. Воспользовшись командой INSERT и вставим в нее немного данных.
INSERT INTO users
VALUES (1, "Mike", "Greenfield", "mike@greenfieldguitars.com",
"http://www.facebook.com/profile.php?id=699186223",
"@greenfieldguitars");
После выполнения данного запроса в таблицу users добавится одна запись.[23]
Есть определенные правила, регламентирующие порядок заполнения базы данных с помощью команд SQL:
- числовые значения должны указываться без кавычек;
- строковые значения всегда должны быть в кавычках;
- значения даты и времени всегда должны быть в кавычках;
- функции должны указываться без кавычек;
- значение NULL никогда не должно заключаться в кавычки.
Наконец, если в строке отсутствует какое-либо значение, оно по умолчанию подразумевается равным значению NULL. Однако если поле не может иметь значение NULL(то есть когда оно было определено как NOT NULL), и вы не указали значение для этого поля, будет сгенерировано сообщение об ошибке.[24]
Команда SELECT, которая используется для вывода информации, хранящейся в таблицах базы данных, одна из самых сложных в языке SQL. Причина этой сложности кроется в главном достоинстве базы данных – гибкости в извлечении информации. Поскольку ваш опыт работы с базами еще не большой, сосредоточимся на относительно примитивных результирующих списках и рассмотрим наиболее простые виды команды SELECT.[25]
Следующая команда перечислит все, что хранится в таблице:
SELECT * FROM users
Существует множество параметров и вариант использования оператора SELECT:
SELECT [параметры] элементы
FROM таблицы
[WHERE условие]
[GROUP BY тип_группировки]
[HAVING определение_where]
[ORDER BY тип_упорядочения]
[LIMIT критерий_ограницения]
[PROCEDURE имя_процедуры(аргументы)][26]
Условные выражения должны следовать за ключевым словом WHERE. C помощью логических операторов AND и OR в предложении WHERE можно определить сразу несколько условий. Порядок исполнения логических операторов изменяется с помощью круглых скобок ().[27]
После того как вы ввели данные в таблицу, может возникнуть необходимость их изменить: исправить орфографическую ошибку в тексте шутки или скорректировать дату ее добавления в базу данных. Такие операции выполняются с помощью команды UPDATE. Подобно операторам SELECT и INSERT она осуществляет два действия сразу: извлекает записи для редактирования и устанавливает значения столбцов. В общем виде команда UPDATE выглядит следующим образом.
UPDATE имяТаблицы SET
имяСтолбца = новоеЗначение, …
WHERE условия
Например, что бы изменить пароль пользователя, уже добавленного в базу данных воспользуемся командой:
UPDATE users SET password=’123456’ WHERE name=’user’[28]
Если вы допустили ошибку при вводе данных, например, указали неверное число страниц в книге, ошибку можно исправить с помощью команды UPDATE. Для внесения изменений в таблицы есть много причин, например изменение пароля пользователя.
В команде UPDATE используется то же предложение WHERE, что и в инструкции SELECT, но в ней присутствует команда SET, с помощью которой определяется новое значение столбца.
Время от времени возникает задача удаления записей из базы данных, для которой предназначены следующий оператор:
DELETE - удаление всех или части записей из таблицы;
Оператор DELETE имеет следующий синтаксис:
DELETE FROM таблица
WНERE where условие
ORDER ВУ ...
LIMIT rows
Оператор удаляет из таблицы записи, удовлетворяющие условию.
Если в операторе DELETE отсутствует условие WHERE , из таблицы удаляются все записи.[29]
Таким образом, можно сказать, что современные динамичные сайты активно используют для своей работы базы данных. Самая доступная СУБД – MySQL, так как она является бесплатной. Данная СУБД позволяет создавать и удалять таблицы баз данных, а так же управлять содержимым таблиц.
2. Основы языка PHP
2.1 Синтаксис PHP
PHP – язык, работающий на стороне сервера. Это может показаться немного сложным для понимания, особенно если вы работали исключительно с помощью клиентских языков, таких как HTML, CSS.[30]
Это одна из наибольших сложностей в PHP-программировании, но она вовсе не связана с программированием как таковым. Это необходимость представлять, как работает PHP, как он взаимодействует с браузером и веб-сервером и почему нельзя сразу выполнить сценарий из PHP-файла на своем диске, просто щелкнув на нем.[31]
Загружая браузер, вы получаете HTML, CSS и JavaScript, но не PHP. PHP-сценарии, которые вы скоро будете писать, должны интерпретироваться специальной программой-интерпретатором, которая и называется php. И просто так добавить PHP-интерпретатор к браузеру нельзя. Браузер не будет знать, что ему делать со сценариями, он просто не создан, чтобы интерпретировать PHP.
Вместо этого PHP должен быть на веб-сервере. Именно веб-сервер, а не браузер может взаимодействовать с интерпретатором PHP. Браузер может самостоятельно разобраться с HTML, но для работы с PHP-сценариями он должен сделать запрос к серверу. Этот сервер берет ваши PHP-сценарии и выполняет их, а потом отправляет полученный результат обратно браузеру. После этого браузер должен только понять и разобрать этот ответ.
Таким образом, для программирования на PHP, нужно иметь доступ в Web-серверу с установленным на нем PHP.[32]
Язык PHP в основном используется для написания скриптов, работающих на сервере. PHP может обрабатывать данные, отправленные с HTML-форм, динамически извлекать информацию из базы данных и генерировать HTML-страницы.
На рисунке 3 показан принцип работы PHP. интерпретатор PHP – волшебный блок, который получает PHP-сценарий и делает с ним что-то полезное, и веб-сервер для взаимодействия с этим интерпретатором. Оба они существуют вне браузера. При таком сценарии браузер формирует запросы к серверу, получает от него ответы и отображает их.[33]
Рисунок 3 – Схема работы интерпретатора PHP
Для того, что бы Web-сервер мог понять и правильно обработать скрипт, его нужно заключить в специальный тег <?php ?> или можно так: <? ?>. Например:
<?php echo “<p>Привет, Мир</p>” ?>[34]
После выполнения данного кода в браузере пользователя будет выведена только строка «Привет, Мир».
Обратите внимание, что PHP-код исчез. Вместо него теперь находится результат выполнения скрипта, который выглядит как обычный HTML-код. Этот пример демонстрирует несколько преимуществ серверных скриптов.
- Отсутствие проблем, связанных с совместимостью с браузерами. Интерпретацией PHP-скриптов занимается исключительно веб-сервер, поэтому не стоит волноваться о том, поддерживает ли браузер пользователя возможности того языка, который вы использовали.
- Доступ к серверным ресурсам. В вышеописанном примере на веб-страницу добавлялась дата, полученная от сервера. JavaScript позволил бы получить только ту дату, которая установлена на компьютере пользователя. Примеры использования серверных ресурсов могут быть и куда более впечатляющими, например добавление на страницу содержимого, извлеченного из базы данных MySQL.
- Снижение нагрузки на клиентскую часть. JavaScript может существенно замедлить отображение веб-страницы (особенно на мобильных устройствах), поскольку, перед тем как вывести ее содержимое, браузеру необходимо выполнить скрипт. Серверный код переносит всю нагрузку на веб-сервер, работу которого можно сделать скоростной на столько, на сколько того требует ваше приложение (и позволяют денежные средства).[35]
Рассмотрение синтаксиса PHP начнем с переменных.
В переменной(variable) сохра-няется некоторое значение, например текстовая строка «Hello World!» или целое число 1. После этого можно использовать переменную в любом месте программы, вместо того чтобы снова и снова впечатывать фактическое значение везде, где это потребуется, что может быть занятием весьма скучным и утомительным.[36]
В языке PHP переменную определяют так:
$variable_name = значение;
На рисунке 4 показана вновь созданная переменная, которой присвоено значение 30.
Рисунок 4 – Переменная PHP
Переменная в PHP – это значение, хранящееся в памяти web-сервера.[37]
Узнать переменную в PHP можно благодаря тому, что ее имя начинается с символа $. Например, $myHeight – это переменная по имени myHeight, а $_REQUEST – это переменная по имени _REQUEST.[38]
PHP не является строго типизированным языком. Это значит, что конкретная переменная на протяжении своего жизненного цикла может содержать данные любого типа, будь то число, текст или любое другое значение. Если вы наберете следующее выражение сразу после предыдущего, оно присвоит новое значение уже существующей переменной $testVariable. Раньше ее использовали для хранения числа, теперь она содержит текстовую строку:
$testVariable = 3;
$testVariable = ‘Три’;
Знак равенства, который использовался в последнем выражение, называется оператором присваивания. С его помощью переменным присваиваются значения. Для выполнения различных математических операций используются другие операторы.[39]
$testVariable = 1 + 1; // присваивает значение 2
$testVariable = 1 - 1; // присваивает значение 0
$testVariable = 2 * 2; // присваивает значение 4
$testVariable = 2 / 2; // присваивает значение 1
Из этого примера следует, что + – оператор сложения, - – оператор вычитания, * – оператор умножения, а / – оператор деления. Все вместе они называются арифметическими операторами, поскольку выполняют арифметические действия с числами.[40]
Особое внимание необходимо обратить на некоторые ключевые моменты синтаксиса переменной. Имя переменной всегда должно начинаться с символа доллара ($). Первый символ после знака доллара должен быть алфавитным символом или символом подчеркивания. Это ни в коем случае не может быть цифра; в противном случае код не будет работать, поэтому отслеживайте подобные опечатки.
- Имена переменных PHP могут содержать только алфавитно-цифровые символы и символы подчеркивания: a-z, A-Z, 0-9 и _
- Имена переменных в PHP чувствительны к регистру букв. То есть $variable_nameи $Variable_Name – это разные переменные.
- Если имя переменной состоит из нескольких слов, отдельные слова желательно отделять друг от друга символом подчеркивания, например: $test_variable.
- Переменным можно присваивать значения с помощью знака равенства (=).
- Операция присваивания значения переменной должна завершаться символом точки с запятой (;).[41]
Документирование имеет практически такое же значение, как и создание кода программы. PHP предоставляет ряд простых способов добавления комментариев к программе:[42]
<php
// комментарий
/* комментарий в стиле С */
?>
С помощью комментариев можно описать то, что выполняет код. Хотя поясняющий текст и находится внутри программы, интерпретатор PHP его игнорирует. Комментарии начинаются с символов //и заканчиваются вместе с текущей строкой. Если комментарий занимает несколько строк, его следует выделить символами /*и */.
Интерпретатор PHP проигнорирует все, что находится между этими двумя разделителями. В оставшейся части книги комментарии помогут вам понять некоторые части представленного кода.[43]