Простейший пример реализации механизма аутентификации
Лабораторная работа № 6
Язык PHP
Практическая часть
1. Динамически сгенерировать таблицу данных 50 строк на 15 столбцов с помощью генератора случайных чисел. Подсчитать статистические данные по строкам и столбцам – среднее значение, максимальное значение и сумма. Результат показать в браузере. Примерный вид таблицы:
1 | 2 | … | 15 | среднее | максимальное | сумма | |
1 | 12 | 29 | … | 45 | 34 | 67 | 345 |
2 | 43 | 23 | … | 24 | 54 | 89 | 254 |
… | … | … | … | … | … | … | … |
50 | 12 | 87 | … | 27 | 23 | 95 | 259 |
среднее | 34 | 56 | … | 45 | |||
максимальное | 98 | 89 | … | 87 | |||
сумма | 345 | 674 | … | 345 |
- Сгенерировать строку из 100 символов с различным типом форматирования. Символы и форматирование получаются случайным образом. Для форматирования применяются тэги <b></b>, <u></u>, <i></i> и их комбинации. Результат показать в браузере. Примерный вид строки:
djklsgjklfmbdgcjdfgkqwxfdgzdfaglj
Теоретическая часть
- Примеры объявления переменных:
$a = 1; - целочисленный тип
$b = 2.45; - вещественный тип
$c = “string”; - строковый тип
Комментарии:
// однострочный комментарий
# это тоже однострочный комментарий
/* многострочный
комментарий */
- Основные команды и примеры:
if (<условие>) <команда> [ else <команда>]
if (<условие>) <команда> elseif (<условие>) <команда>
if (x > y) print “x>y”;
elseif (x<y) print “x<y”;
|
|
else print “x=y”;
for(<инициализация>;<условие>;<приращение>) <команда>
for ($i=0; $i < 10; $i++) $fact = $fact * $i;
continue; - продолжить цикл, пропустив нижележащие команды
break; - прекратить цикл
mt_rand (<минимум>, <максимум>); - сгенерировать случайное число
$num = mt_rand(10,50);
- Основные функции вывода:
print <аргумент>; - вывести аргумент
Пример: print “Hello World!”;
echo <аргумент>; - вывести группу аргументов
Пример: echo “Hello World!”, “Hello Earth!”, “Hello Sky!”;
printf (<формат>[, <аргументы>,…] ); - С-подобная функция
Пример: printf (“my course is %d%s\n”, 4, “<br>”);
- Пример PHP-скрипта:
<html>
<body>
<?php
print "Hello Programmer!<br>";
for ($i = 0; $i < 10; $i++ )
printf (“Serial number is %d<br>“, $i);
printf ("Random number is %d<br>", mt_rand(0,100));
?>
</body>
</html>
Лабораторная работа № 7
Обмен информацией между WEB-сервером и клиентом
Практическая часть
Программа «Получение анкетных данных от пользователя».
- Разработать HTML-файл для возможности получения от пользователя автобиографической информации. Для этого необходимо использовать следующие виды объектов экранных форм: поле редактирования, радио-кнопки, комбинированный список, список с множественным выбором, кнопки-переключатели.
Пример, вводимых данных:
|
|
- ФИО – поля редактирования
- Пол (мужской, женский) – радио-кнопки
- семейное положение (холост, женат/замужем) – радио-кнопки
- образование (среднее, высшее и т.п.) – комбинированный список
- хобби (спорт, охота, рыбалка, компьютеры, пиво, ТВ и т.п.) – список с множественным выбором
- есть ли компьютер – кнопка-переключатель
- Разработать PHP-скрипт, анализирующий введенные данные и генерирующий введенную информацию в виде списка автобиографических данных по каждому из веденных лиц.
Пример:
Иванов Иван Иванович
Пол: мужской
Семейное положение: холост
Образование: высшее
Хобби: охота, рыбалка
Наличие ПК дома: есть
- Использовать поочередно в п.1 методы GET и POST. Посмотреть в чем различия. Разобрать формат передачи параметров в методе GET.
Теоретическая часть
Примеры создания полей ввода и кнопок можно посмотреть в лекции или спецификации языка HTML. Используемые тэги:
<FORM> - создание формы
<INPUT> -создание полей редактирования, кнопок различных видов
<SELECT> - создание списка выбора и комбинированного списка
Лабораторная работа № 8
Цель: Разработка диалоговых систем с помощью Web-технологий.
|
|
Задачи:
1. Научиться переносить данные между страницами
2. Научиться переадресовывать запросы
Требования к системе. Разработать систему, выполняющую следующие функции:
1. Авторизация введенных данных о пользователе. После авторизации каждый каждая страничка должна содержать ФИО «залогиневшегося» пользователя
2. Ввод данных от пользователя
3. Редактирование введенных данных
4. Просмотр введенных данных
Система состоит из 4-х модулей:
1. Страница ввода идентификационных данных (логин/пароль)
2. Главное меню
3. Страница ввода/редактирования данных
4. Просмотр введенных данных
Функциональная схема работы:
Практическая реализация
Данная лабораторная работа опирается на предыдущую лабораторную работу №2 «Обмен информацией между WEB-сервером и клиентом». В качестве примера для реализации можно взять систему работы с анкетными данными. Работа системы начинается со страницы «ввод логина/пароля». В случае удачной аутентификации пользователь попадает на «основное меню», из которого он может ввести/поменять/просмотреть данные о себе или выйти из системы. Переадресация на другую страницу выполняется с помощью команды протокола HTTP, реализуемую через:
|
|
print header ("Location: login.php");
exit;
Данная команда должна идти первой из выводимого на поток вывода (до тега <html>), иначе переадресации не случится.
Требование к безопасности: «неавторизованные» пользователи не должны видеть ни одной странички, кроме «ввод логина/пароля». В случае, если «неавторизованный» пользователь пытается вызвать любую страницу, система должна адресовать его на страницу «ввод логина/пароля».
Простейший пример реализации механизма аутентификации.
Создаются две функции:
get_user_id($login, $password); - в случае успешной проверки возвращает идентификатор пользователя, в случае неудачи – возвращает –1.
get_correct_login($user_id);- проверяет корректность идентификации. В случае неудачи переадрессует на страницу «ввод логина/пароля».
Файл «authlib.inc»
<?php
$passwd[“Ivanov”][“id”] = 1289;
$passwd[“Ivanov”][“password”] = “pass1”;
$passwd[“Petrov”][“id”] = 1423;
$passwd[“Petrov”][“password”] = “table”;
$passwd[“Sidorov”][“id”] = 4598;
$passwd[“Sidorov”][“password”] = “nothing”;
function get_user_id($login, $password) {
GLOBAL $passwd;
if ($passwd[$login][“password”] == $password) {
return $passwd[$login][“id”];
} else {
return –1;
}
}
function get_correct_login($user_id) {
GLOBAL $passwd;
return in_array($user_id, $passwd);
}
?>
После чего можно использовать эту библиотеку в страницах командой
include(“authlib.inc”);
После чего нужно идентифицировать пользователя:
$id = get_user_id($login, $password);
if ($id == -1) {
print header ("Location: login.php");
exit;
}
Для передачи параметров между страницами в формах испльзуется тэг
<INPUT type=”HIDDEN”>. Данный тег не отображается на форме визуально и предназначен для передачи скрытых параметров, принцип передачи – как у <INPUT type=”TEXT”>. Пример передачи идентификатора пользователя:
<INPUT type=”HIDDEN” name=”user_id” value=”<?php print $user_id; ?>”>
После чего для организации безопасности каждый файл можно начинать со строки:
$id = get_correct_login($user_id);
if ($id == -1) {
print header ("Location: login.php");
exit;
}
Лабораторная работа № 9
Знакомство с СУБД MySQL
Задание
Разработать информационно-справочную систему, например «телефонный справочник» ().
База данных системы должна включать, как минимум, 10 типов строк по каждой записи и не менее 20 видов записей.
Например:
- Фамилия.
- Имя.
- Отчество.
- Телефон.
- Адрес проживания.
- И т.д.
Система должна выполнять следующие операции:
- Ввод и корректировка данных администратором системы.
- Поиск и вывод информации по различным критериям, не менее 5 видов (определить самостоятельно).
Система состоит из двух независимых блоков:
- Блок ввода информации в базу администратором
- Блок вывода информации по запросам пользователей
Блок вывода информации по запросам пользователей состоит из двух модулей. Первый модуль запрашивает информацию для поиска в базе (фамилию или телефон). Второй модуль, на основании критериев поиска, формирует запрос к базе, получает ответ и формирует вывод результатов поиска в виде таблицы
Блок ввода информации в базу позволяет вводить и изменять данные только администратору БД. Перед работой в этом блоке необходима проверка прав доступа
Теоретический материал
MySQL - Система Управления Базами Данных (СУБД). Основное отличие от всех остальных СУБД это то, что она является бесплатной. В силу того, что MySQL бесплатна, она поддерживается очень многими хостинг провайдерами.
Для связи PHP и MySQL нужно знать:
- Хост - адрес сервера баз данных MySQL
- Имя базы данных
- Имя пользователя
- Пароль - пароль для доступа к БД
- Некоторые SQL команды
Алгоритм:
- Устанавливаем соединение с сервером
- Выбираем нужную базу данных
- Делаем запрос к серверу баз данных (SQL запрос)
- Обрабатываем результат запроса, если это необходимо
- Закрываем соединение (отключаемся от сервера БД)
Для части PHP, чтобы работать с БД необходимо знать несколько функций.
- mysql_connect();
- mysql_select_db();
- mysql_query();
- mysql_fetch_array();
- mysql_close();
Это тот минимум, который позволит устанавливать соединение с сервером MySQL, выбирать базы данных и делать запросы к серверу баз данных.
Рассмотрим эти функции в работе, т.е. на примере.
Допустим в базе данных храниться одна таблица со следующей структурой:
имя поля | тип(длина) | описание |
Id | целый(2) | уникальный номер |
name | символьный(100) | имя |
Tel | символьный(20) | телефон |
Таблица имеет имя: customer, а база данных называется database.
Допустим, что данные для подключения к серверу MySQL Такие:
- Хост: localhost
- Имя пользователя: Guest
- Пароль: mypassword
Для начала необходимо создать нашу таблицу customer. Напишем скрипт, который создаст в базе данных database таблицу customer. Назовём файл как install.php.
Файл install.php
<?php // Данные для MySQL сервера $DBHost = "localhost"; // Хост $DBUser = "Guest"; // Имя пользователя $DBPassword = "mypassword"; // Пароль $DBName = "database"; // Имя базы данных // Подключаемся к MySQL серверу $Link = mysql_connect($DBHost, $DBUser, $DBPassword); // Выбираем нашу базу данных mysql_select_db($DBName, $Link); // Создаём таблицу customer // т.е. делаем SQL запрос $Query = "CREATE TABLE customer (id INT(2) PRIMARY KEY AUTO_INCREMENT, name VARCHAR(100), tel VARCHAR(20))"; mysql_query($Query, $Link); // Закрываем соединение mysql_close($Link) ?>Функция mysql_connect() возвращает идентификатор соединения. Этот идентификатор необходимо указывать во всех MySQL функциях. Можно провести аналогию с указателем на файл (file pointer), который используется функциями по работе с файлами. В параметрах функции указали хост, имя пользователя и пароль к базе данных.
На сервере MySQL храниться не только ваша база данных. Сервер может обслуживать тысячи таких баз данных. Поэтому, чтобы получить доступ к своей базе данных, необходимо выбрать её. Выбор базы данных осуществляется функцией mysql_select_db(). В параметрах указывается: имя требуемой базы данных $DBName и идентификатор соединения $Link, который мы получили с помощью функции mysql_connect().
После того как мы подключились к серверу MySQL и выбрали нашу базу данных, мы делаем SQL запрос. В запросе указываем, что мы хотим создать таблицу с именем customer и со структурой приведённой в таблице выше. Запрос к серверу MySQL осуществляется с помощью функции mysql_query(). В параметрах указывается сам запрос $Query и идентификатор соединения $Link.
И, наконец, отключаемся от сервера (закрываем соединение) функцией mysql_close(). В параметрах указываем идентификатор того соединения, которое нужно закрыть.
Если вы всё сделали правильно, то на сервере MySQL в вашей базе данных, появится таблица customer.
После того как создали таблицу, её надо заполнить т.е. записать в нёё какие-нибудь данные (записи). Напишем скрипт, который будет добавлять запись в нашу таблицу. Назовём файл скрипта как insert.php.
Файл insert.php
<?php // Данные для MySQL сервера $DBHost = "localhost"; // Хост $DBUser = "Guest"; // Имя пользователя $DBPassword = "mypassword"; // Пароль $DBName = "database"; // Имя базы данных // Подключаемся к MySQL серверу $Link = mysql_connect($DBHost, $DBUser, $DBPassword); // Выбираем нашу базу данных mysql_select_db($DBName, $Link); // Добавляем запись в нашу таблицу customer // т.е. делаем SQL запрос $Query = "INSERT INTO customer VALUES(0,'Иванов Иван Иванович', '(095) 555-55-55')"; mysql_query($Query, $Link); // Закрываем соединение mysql_close($Link); ?>Посмотрев этот скрипт вы заметете, что он отличается от предыдущего только строкой запроса $Query.
Теперь когда мы умеем записывать данные в базу данных, перейдём к процедуре запроса данных из базы MySQL. Для этого напишем скрипт и назовём файл select.php.
Файл select.php
<?php // Данные для MySQL сервера $DBHost = "localhost"; // Хост $DBUser = "Guest"; // Имя пользователя $DBPassword = "mypassword"; // Пароль $DBName = "database"; // Имя базы данных // Подключаемся к MySQL серверу $Link = mysql_connect($DBHost, $DBUser, $DBPassword); // Выбираем нашу базу данных mysql_select_db($DBName, $Link); // Добавляем запись в нашу таблицу customer // т.е. делаем SQL запрос $Query = "SELECT * FROM customer"; // Запрашиваем $Result = mysql_query($Query, $Link); while($Rows = mysql_fetch_array($Result, MYSQL_ASSOC)) { printf("id:%d, name:%s, tel:%s", Rows['id'],Rows['name'],Rows['tel']); } // Закрываем соединение mysql_close($Link); ?>Естественно изменилась строка запроса $Query, которая теперь содержит SQL-оператор SELECT. Так же добавился небольшой код while() { .... }. Скажу только, что функция mysql_fetch_array() обрабатывает результат запроса и возвращает массив полей текущей! Внимание! текущей строки результата.
Константа MYSQL_ASSOC указывает на то, что функция должна вернуть ассоциативный массив полей. После того как функция mysql_fetch_array() обработает все строки результата, она вернёт значение FALSE и тогда цикл while() - не выполниться.
Тут в цикле используем функцию printf(). Она очень похожа на эту же функцию в языке C.
Лабораторная работа № 10
Дата добавления: 2018-02-28; просмотров: 376; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!