В этой статье речь пойдет о реализации простого тестирования при помощи PHP.
Стоит сразу отметить, что выбирая PHP, за место javascript вы получаете большую надежность в тестировании, так как PHP это серверный язык программирования и выполняется он на сервере, то подсмотреть ответы и сам код намного сложнее, нежели это бывает с javascript.
В нашем тесте будут разные вопрос, с различными вариантами ответов - выбор одного правильного ответа из группы, запись ответа в текстовое поле, выбор нескольких вариантов в ответе.
Сам тест будет хранить у нас в index.html, как форма со всеми её элементами. А проверка тестирования будет проходить в файле test.php.
Подготовим тест и напишем разметку нашей страницы:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Страница</title>
</head>
<body>
<form method="post" action="test.php">
<div class="element">
<p><strong>Вопрос №1:</strong> Столица России</p>
<p><input type="radio" name="capital" value="Санкт-Петербург"> Санкт-Петербург</p>
<p><input type="radio" name="capital" value="Париж"> Париж</p>
<p><input type="radio" name="capital" value="Москва"> Москва</p>
<p><input type="radio" name="capital" value="Киев"> Киев</p>
</div>
<div class="element">
<p><strong>Вопрос №2:</strong> Сколько будет (5 + 5 + 5) - (5 + 5) * 0</p>
<p><input type="text" name="matematic" placeholder="Введите сюда ответ" /></p>
</div>
<div class="element">
<p><strong>Вопрос №3:</strong> Вы счастливый человек? (Правильный ответ - Да! ^_^)</p>
<p><input type="radio" name="happy" value="Да"> Да</p>
<p><input type="radio" name="happy" value="Нет"> Нет</p>
</div>
<div class="element">
<p><strong>Вопрос №4:</strong> Выберите мужские имена</p>
<p><input type="checkbox" name="gender1" value="Михаил"> Михаил</p>
<p><input type="checkbox" name="gender2" value="Анастасия"> Анастасия</p>
<p><input type="checkbox" name="gender3" value="Стёпа"> Стёпа</p>
<p><input type="checkbox" name="gender4" value="Светлана"> Светлана</p>
<p><input type="checkbox" name="gender5" value="Габи"> Габи</p>
</div>
<div class="element">
<p><input type="submit" value="Отправить ответы" /></p>
</div>
</form>
</body>
</html>
Здесь стоит отметить то, что в атрибутах name лучше задавать понятные названия, с которыми вам потом придется оперировать в PHP файле. Так же мы советуем вам в атрибутах value так же задавать понятные значения, чтобы не приходилось оперировать непонятными цифрами(именно это значения сохраняется и отправляется в обработчик).
Раз разметка готова, остается только написать сам скрипт проверки тестирования, получать данные мы будем из глобальной переменной POST, результат будем выводить в процентах от выполненных заданий.
Стоит отметить вопрос, когда у нас несколько вариантов ответов, для этого приходиться удлинить код и создать дополнительную переменную для проверки. Мы считаем, что вопрос отвечен правильно только если выбраны все мужские имена и ни одного женского.
<?php
//Получаем данные из глобальной переменной $_POST, так как мы передаем данные методом POST
$capital = $_POST['capital']; // Вытаскиваем ответ на первый вопрос в переменную
$matematic = $_POST['matematic']; // Вытаскиваем ответ на второй вопрос в переменную
$happy = $_POST['happy']; // Вытаскиваем ответ на третий вопрос в переменную
/* Вопрос четвёртый с несколькими вариантами ответов */
$hgender1 = $_POST['gender1'];
$hgender2 = $_POST['gender2'];
$hgender3 = $_POST['gender3'];
$hgender4 = $_POST['gender4'];
$hgender5 = $_POST['gender5'];
$result = 0; // результат будет в процентах правильных ответов
/* проверяем первый вопрос */
if ($capital == "Москва") {
$result += 25;
}
/* проверяем второй вопрос */
if ($happy == "Да") {
$result += 25;
}
/* проверяем третий вопрос */
if ($matematic == "15") {
$result += 25;
}
/* Проверяем четвёртый вопрос */
$subresult = 0; // дополнительная переменная для подсчёта правильности ответов на 4 вопрос
/* если мужское имя выбрано правильно то увеличиваем счётчик */
if ($hgender1 != '') {
$subresult++;
}
if ($hgender3 != '') {
$subresult++;
}
/* если выбрано женсмкое имя уменьшаем счётчик */
if ($hgender2 != '') {
$subresult--;
}
if ($hgender4 != '') {
$subresult--;
}
if ($hgender5 != '') {
$subresult--;
}
if ($subresult == 2) {
$result += 25;
}
echo "<center>Вы прошли тест на <strong>$result%</strong></center>";
?>
Код проверки так же снабжён множеством комментариев, которые смогут помочь вам разобраться.
Проверить работоспособность примера можно тут:

Скачать пример тут:

Комментарии
Опечатался) или задумка такая была, не помню уже, сейчас исправлю.
RSS лента комментариев этой записи