LAB13 Машеров Д.Е. (Лабораторная работа 13)
Описание файла
Файл "LAB13 Машеров Д.Е." внутри архива находится в папке "Лабораторная работа 13". Документ из архива "Лабораторная работа 13", который расположен в категории "". Всё это находится в предмете "вычислительные машины, системы и сети (вмсис)" из 8 семестр, которые можно найти в файловом архиве НИУ «МЭИ» . Не смотря на прямую связь этого архива с НИУ «МЭИ» , его также можно найти и в других разделах. Архив можно найти в разделе "лабораторные работы", в предмете "вычислительные машины, системы и сети (вмсс)" в общих файлах.
Онлайн просмотр документа "LAB13 Машеров Д.Е."
Текст из документа "LAB13 Машеров Д.Е."
Национальный исследовательский институт
Московский Энергетический Институт (Технический Университет)
Институт автоматики и вычислительной техники
Кафедра Прикладной математики
Лабораторная работа №13
по дисциплине ВМСС
по темам: «Разработка страниц с серверными скриптами: Разработка страниц с формами и элементами управления. Разработка страниц с применением языка PHP»
Выполнил:
Машеров Дмитрий Евгеньевич
Проверил:
к.т.н., доц. Куриленко Иван Евгеньевич
Москва
2012 г.
Оглавление
1. Основные сведения 2
Формы 2
PHP 2
2. Выполнение заданий 3
Страница для тестирования знаний 3
Форма с тестом (knowledge.php): 3
Обработка результатов теста (testResult.php) 5
Функция таймера (JavaScript) 6
Счетчик скачиваний файла. 6
Форма для скачивания (downloadForm.php) 6
Увеличение числа скачиваний (download.php) 6
Регистрация пользователей на сайте 7
Таблица БД 7
Главная старница (knowledgeTest.php) 7
Подключение к базе данных(dbConnect.php) 8
Регистрация пользователя (registration.php) 8
Вход(Файл login.php) 9
Выход(Файл logout.php) 9
Голосование 10
Таблицы БД. 10
Старница с голосованием (polls.php) 10
-
Основные сведения
Формы
Формы предназначены для обмена данными между пользователем и сервером. Область применения форм не ограничена отправкой данных на сервер, с помощью клиентских скриптов можно получить доступ к любому элементу формы, изменять его и применять по своему усмотрению.
Документ может содержать любое количество форм, но одновременно на сервер может быть отправлена только одна форма. По этой причине данные форм должны быть независимы друг от друга.
Форма устанавливается с помощью тега . Для отправки формы на сервер используется кнопка Submit, того же можно добиться, если нажать клавишу Enter в пределах формы. Если кнопка Submit отсутствует в форме, клавиша Enter имитирует ее использование, но только в том случае, когда в форме имеется только один элемент . Если таких элементов два и более, нажатие на не вызовет никакого результата.
Когда форма отправляется на сервер, управление данными передается программе, заданной атрибутом action тега . Предварительно браузер подготавливает информацию в виде пары «имя=значение», где имя определяется атрибутом name тега , а значение введено пользователем или установлено в поле формы по умолчанию. Если для отправки данных используется метод GET, то адресная строка может принимать следующий вид.
http://www.htmlbook.ru/cgi-bin/handler.cgi?nick=%C2%E0%ED%FF+%D8%E0%EF%EE%F7%EA%E8%ED&page=5
Параметры перечисляются после вопросительного знака, указанного после адреса CGI-программы и разделяются между собой символом амперсанда (&). Нелатинские символы преобразуются в шестнадцатеричное представление (в форме %HH, где HH — шестнадцатеричный код для значения ASCII-символа), пробел заменяется на плюс (+).
Допускается внутрь контейнера помещать другие теги, при этом сама форма никак не отображается на веб-странице, видны только ее элементы и результаты вложенных
Все данные из HTML-формы в PHP сценарий обрабатываются с помощью суперглобальных массивов $_POST или $_GET, в зависимости от указанного в атрибуте method метода передачи данных.
PHP
PHP — скриптовый язык программирования общего назначения, интенсивно применяемый для разработки веб-приложений. В настоящее время поддерживается подавляющим большинством хостинг-провайдеров и является одним из лидеров среди языков программирования, применяющихся для создания динамических веб-сайтов.
-
Выполнение заданий
Страница для тестирования знаний
Разработать страницу для тестирования знаний (страницы содержат вопросы и варианты ответов, есть таймер для ограничения времени ответа).
Форма с тестом (knowledge.php):
Тест по русскому языку:
Обработка результатов теста (testResult.php)
session_start();
if (!isset($_SESSION['id']))
header('Location: knowledgeTest.php');
$questionnumber ="q";
$rightAnswerNumber = 0;
for ($i=1;$i<=3;$i++)
{
$questionnumber ="q".$i;
if(isset($_POST[$questionnumber]) && $_POST[$questionnumber] == "true")
{
$rightAnswerNumber++;
}
}
for ($i=4;$i<=5;$i++)
{
$questionnumber ="q".$i;
if(isset($_POST[$questionnumber]) && (!in_array("false", $_POST[$questionnumber])))
{
if ( count($_POST[$questionnumber]) == 2)
$rightAnswerNumber++;
}
}
echo "Ваш результат: ".$rightAnswerNumber."";
echo 'Вернуться'
?>
Функция таймера (JavaScript)
function countDown(count){
document.getElementById('countDown').innerHTML = "Таймер: " + count;
if (count == 0)
{
document.getElementById('countDown').innerHTML = "Время закончилось";
document.getElementById('Test').innerHTML = '';
return;
}
count = count-1;
t = setTimeout(function () {countDown(count);}, 1000);
}
Счетчик скачиваний файла.
Был создан текстовый файл filecount.txt для хранения числа скачиваний.
Форма для скачивания (downloadForm.php)
$handle = fopen("filecount.txt", "r");
$count = fread($handle, filesize("filecount.txt"));
echo '
echo "
echo '
';
?>
Увеличение числа скачиваний (download.php)
$handle = fopen("filecount.txt", "r+");
$count = fread($handle, filesize("filecount.txt"));
fseek($handle, 0);
fwrite($handle, $count+1);
$file = ("files/stickman.gif");
header ("Content-Type: application/octet-stream");
header ("Accept-Ranges: bytes");
header ("Content-Length: ".filesize($file));
header ("Content-Disposition: attachment; filename=".$file);
readfile($file);
?>
Регистрация пользователей на сайте
Вид страницы для не вошедшего на сайт пользователя:
Вид страницы для вошедшего на сайт пользователя:
Вид страницы для регистрации:
Таблица БД
users
-
Id
-
Name
-
Password
Пароль сохраняется в базу данных в зашифрованном с помощью алгоритма md5 виде.
Главная старница (knowledgeTest.php)
. . .
if (!isset($_SESSION['name']))
{
echo '
include_once 'login.php';
echo '
';}
else
{
echo "
';include_once 'downloadForm.php';
include_once 'polls.php';
. . .
Подключение к базе данных(dbConnect.php)
$db = mysql_connect('localhost', 'root', 'winducom74');
if (!$db) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db('site', $db);
?>
Регистрация пользователя (registration.php)
$name = $_POST['name'];
$password = md5($_POST['password']);
$errors = '';
if (empty($name))
{
$errors .= 'Введите имя';
}
if (empty($_POST['password']))
{
$errors .= 'Введите пароль';
}
include_once 'dbConnect.php';
$query = "select id from users where name='{$name}'";
$result = mysql_query($query);
if (mysql_num_rows($result) != 0)
$errors .= "Пользователь с таким именем уже существует";
if (empty($errors))
{
$query = "INSERT INTO `users` (`name`, `password`) VALUES ('$name', '$password')";
if (!mysql_query($query))
$errors .= "Не удалось зарегистрировать";
}
if (empty($errors))
{
echo"
Регистрация завершена
Ваше имя на сайте: $name
Ваш пароль: {$_POST["password"]}
Перейти на страницу с тестом";
session_start();
$_SESSION['name'] = $_POST['name'];
$_SESSION['id'] = mysql_insert_id();
echo $_SESSION['name'];
echo $_SESSION['id'];
header('Location: knowledgeTest.php');
}
else
{
echo $errors;
}
mysql_close($db);
echo "