LAB13 Машеров Д.Е. (Лабораторная работа 13)

2015-08-20СтудИзба

Описание файла

Файл "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





  1. Основные сведения

Формы

Формы предназначены для обмена данными между пользователем и сервером. Область применения форм не ограничена отправкой данных на сервер, с помощью клиентских скриптов можно получить доступ к любому элементу формы, изменять его и применять по своему усмотрению.

Документ может содержать любое количество форм, но одновременно на сервер может быть отправлена только одна форма. По этой причине данные форм должны быть независимы друг от друга.

Форма устанавливается с помощью тега . Для отправки формы на сервер используется кнопка 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 — скриптовый язык программирования общего назначения, интенсивно применяемый для разработки веб-приложений. В настоящее время поддерживается подавляющим большинством хостинг-провайдеров и является одним из лидеров среди языков программирования, применяющихся для создания динамических веб-сайтов.

  1. Выполнение заданий

Страница для тестирования знаний

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

Форма с тестом (knowledge.php):

Тест по русскому языку:

  1. Часть речи, являющееся наименованием предмета, субъекта, живого существа - это

    Глагол

    Существительное

    Наречие

    Междометие

  2. Укажите пример с ошибкой в образовании формы слова.

    Cемьюстами пятидесяти пяти шутками

    Высочайший

    Шесть грузин

    Вкусные торты

  3. Какое из нижеперечисленных словосочетаний является союзом?

    Как будто

    Лишь бы

    В продолжение

    Не спеша

  4. В каких словах пишется две буквы Н?

    Моще(н)ая булыжником дорога

    Краше(н)ый пол

    Мы увере(н)ы в победе

    Жёва(н)ый

    Рифмова(нн)ый

  5. Укажите варианты, в котором правильно указаны все примеры, где на месте пропуска пишется Ь.

    Старик только шевелит губами и крестит_ся, отец же громко шепчет и конец каждой молитвы произносит вслух и отчётливо.

    Машинист и его помощ_ник, люди очень хладнокровные и равнодушные, делают какие-т непонятные движения и не спешат.

    На другой день утром к следователю был приведён из Кляузовки молодой парень с большой головой и заяч_ей губой.

    Юноша ни на минуту не мог отделат_ся от странного, неприятного чувства.

Обработка результатов теста (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 '

Количество скачек картинки: '.$count.'
';

echo "

GIF Animation

";

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 "

Привет, {$_SESSION['name']}!
";

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 "";

?>

Вход(Файл login.php)



if(!empty($_POST['name'])&&!empty($_POST['password']))

{

include_once 'dbConnect.php';

$password = md5($_POST['password']);

$query = "SELECT id FROM users WHERE name='{$_POST['name']}' AND password='{$password}'";

$result = mysql_query($query);

if (mysql_num_rows($result) == 0)

$wrong = "

Неверно указаны имя или пароль
";

else

{

session_start();

$_SESSION['name'] = $_POST['name'];

$_SESSION['id'] = mysql_result($result, 0);

header('Location: knowledgeTest.php');

}

}

if (isset($wrong))

echo $wrong;

echo "

Имя:

Пароль:

";

?>

Выход(Файл logout.php)



session_start();

session_unset();

header('Location: knowledgeTest.php');

?>



Голосование

Таблицы БД.

poll_questions

  • questionID

  • Text

poll_answers

  • poll_answers

  • Text

  • questioned

polls

  • questionID

  • userID

  • answerID

Старница с голосованием (polls.php)



include_once 'dbConnect.php';

$voting = false;

$revote = false;

if (!isset($_SESSION['id'])) // Неизвестный пользователь

{

echo "Вы должны войти на сайт чтоб голосовать";

}

else

{

if (isset($_POST['revote'])) // Пользователь решил переголосовать

{

$query = "DELETE FROM `polls` WHERE `userID`='{$_SESSION['id']}';";

$result = mysql_query($query);

$voting = true;

}

elseif (isset($_POST['vote'],$_POST['questionID'])) // Пользователь голосует

{

$query = "INSERT INTO `polls` (`questionID`, `userID`, `answerID`) VALUES ({$_POST['questionID']}, {$_SESSION['id']}, {$_POST['vote']})";

$result = mysql_query($query);

$revote = true;

}

else

{

// Проверка голосовал ли пользователь

$query = "select userid

from polls

where userID={$_SESSION['id']}";

$result = mysql_query($query);

if(mysql_num_rows($result) == 0)

$voting = true;

else

$revote = true;

}

}

echo 'Опросы: ';

echo '

    ';

$query = "select questionID,Text from poll_questions";

$questions = mysql_query($query);

while ($question = mysql_fetch_assoc($questions)) {

echo '

  • '.$question['Text'].'
  • ';

    $query = "select poll_answers.answerID,poll_answers.Text,count(polls.answerID) as count

    from poll_answers

    left OUTER join polls on poll_answers.answerID = polls.answerID

    where poll_answers.questionID ='{$question['questionID']}'

    group by poll_answers.answerID";

    $answers = mysql_query($query);

    if ($voting === true)

    echo "";

    else

    {

    echo '

      ';

    }

    while ($row = mysql_fetch_assoc($answers)) {

    if ($voting === true)

    {

    echo "".$row['Text'].'
    ';

    echo $row['count'].'
    ';

    }

    else

    {

    echo '

  • '.$row['Text'].'
    ';
  • echo $row['count'].'';

    }

    }

    if ($voting === true)

    {

    echo "";

    echo "";

    echo '';

    }

    else

    echo "";

    if ($revote == true)

    {

    echo "

    ";

    }

    }

    echo '';

    ?>



    Свежие статьи
    Популярно сейчас
    Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
    Ответы на популярные вопросы
    Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
    Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
    Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
    Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
    Отзывы студентов
    Ставлю 10/10
    Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
    Лучшая платформа для успешной сдачи сессии
    Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
    Студизба ван лав ❤
    Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
    Отличный сайт
    Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
    Маленький отзыв о большом помощнике!
    Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
    Студ. Изба как крупнейший сборник работ для студентов
    Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
    Спасательный островок
    Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
    Всё и так отлично
    Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
    Отзыв о системе "Студизба"
    Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
    Отличный помощник
    Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
    Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
    Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
    Спасибо за шикарный сайт
    Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
    Популярные преподаватели
    Добавляйте материалы
    и зарабатывайте!
    Продажи идут автоматически
    5167
    Авторов
    на СтудИзбе
    438
    Средний доход
    с одного платного файла
    Обучение Подробнее