//Редакция теста от
$version="11.11.2015";
//что добавилось----------------------------------------------
/*
ИСТОРИЯ ИЗМЕНЕНИЙ
11.11.15
Добавил проверку правильности введенного имени. Если не правильное, то тестирование не начинается
Если ввели имя матом, то блокируется доступ к сайту на 24 часа. Реализовано через куки
Исправил ошибку при выводе результатов. выводились сразу все результаты для всех тестов, а не для конкретного теста по переменной t
Исправил ошибку, что не убиралось тексовое поле ввода ФИО в некоторых браузерах. Работало только в фаерфоксе. Терерь везде работает
Добавил поле "результат", где выводится "зачтено" или "Не зачтено" в файле result
9.11.15
Изменил файл finish - теперь там не выводится статистика для анонимных пользователей. Также в файле index добавлено сообщение для анонимных пользователей, что они будет много лишины, если захотят тестироваться анонимно
Начал работу над файлом result. Ошибка с выбором теста по параметру t
1.11.15 Запущена в работу новая версия (эта) теста. Тест теперь обкатываем на пользователях. Добавлены возможности отправки сообщения автору и теперь корректно печатаются сертификаты. Выложено 5 тестов. Полностью исправлен тест по английскому языку. Теперь он тоже используется
Выведены списки кто сдавал тесты в прошлых версиях теста и в центре РЕТ
28.04.14 Добавил возможность сообщать об ошибке в тесте. Письмо уходит мне не почту
18.04.14 Добавил возможность отбирать таблицу сдавших тест пользователей не только на основе ip-адреса, но и подсети
Исправил проверку сравнения правильного ответа с тем, что вводит пользователь. Добавил нечеткое сравнение. Т.е. можно допустить небольшую ошибку, когда вводишь от руки ответ. Плюс мелкие доработки
Добавил проверку версий браузеров. Если в браузере нет возможности приватных вкладок, то такой браузер не будет поддерживаться
07.04.2014
Сделал корректное прерывание теста. До этого новый тест продолжался с вопросов предыдущего. В общем исправил ошибку
Изменен вид сертификата (новый дизайн) и способ отображения на нем надписей. Теперь надписи формируются автоматически посередине сертификата
Добавил в базу результатов идентификатор теста, переоформил базу результатов, чтобы было проще разбирать. Добавил еще комментарии в текст кода
Вынес основые функции в инклудники (папка base)
Добавил защиту с помощью .htaccess. Добавил переход к следующему вопросу по клавише Enter
Исправил ошибку, когда тест мог идти с отрицательными номерами вопроса (больше чем положено)
Добавил возможность добавления описания теста из файлов с описаниями (папка base, рассширение htm)
06.04.14 Добавил файл вывода результатов. Изменил файл сохранения результатов. Теперь не все пользователи будут выводиться на экран. Будет анализ имени
27.03.2014
Добавлены анонимные пользователи. Наведен космитический дизайн главной страницы сайта. Сервый вид
Теперь в логи записываются все запросы отличные от стандартных
20.07.2012
13. Добавлени модуль по созданию тестов и блокировка спамеров (бан ip-адресов)
19.07.2012
12. Все конфигурационные файлы и базы данных перенесены в папку base
17.07.2012
7. Все тесты объединил в один файл, чтобы не было путаницы с версиями и вообще так проще. Теперь не будет кучи каталогов, а номер теста будет определятся ключом t
8. Добавил в каталог base файл hack.db в котором будут фиксироваться все не стандартные запросы пользователя, попытки ввести теги и т.д.
9. Исправлены технические недочеты, которые сдалал новые и пропустил старые
10. Добавлены различные удобства для пользователя. Например, не надо щелкать не поле с вводом ФИО. По умолчанию фокус уже установлен на нем
11. Изменен дизайн всего теста. Все стало более "пестрым"
BETA
1. Увеличино процентное соотношение для второй попытки сдачи с 50 до 70%
также записываются логи о том, что человеку было отказано в сдаче теста
2. Увеличен проходной бал с 70 до 80 процентов правильный ответов
3. Количество вариантов ответа увеличено до 7 (вместо 4-х)
4. На главной странице выводиться список людей проходивших тест с данного IP-адреса
5. Куча всяких дороботок по исправлению багов и глюков предыдущей версии
6. Формируется персональная страница и свой собственный сертификат
*/
//-------------------------------------------------------
//ТЕКУЩИЙ ПУТЬ
@$ans=substr(htmlspecialchars(trim($HTTP_POST_VARS["ans"])),0,25);
@$anonim=$HTTP_POST_VARS["anonim"];
@$name=htmlspecialchars($HTTP_POST_VARS["name"]);
@$id2=$HTTP_POST_VARS["id2"];
//Инедтификатор организации, которая заставила сдавать тест
@$oid=substr($HTTP_POST_VARS["oid"],0,20);
if ($oid=="") {@$oid=substr($HTTP_GET_VARS["oid"],0,20);}
$is_end=@$HTTP_GET_VARS["c"];
@$id3=$HTTP_POST_VARS["id3"];
@$time=$HTTP_POST_VARS["tm"];
@$topic=substr($HTTP_POST_VARS["topic"],0,2);
@$t_array=$HTTP_POST_VARS["t_array"];
// Задаю где какие тесты лежат и подключаю внешнии функции
include "include/test_def.php";
//Проверка не забанен ли пользователь. По наличию кукисов
if ($_COOKIE["set-block"]=="yes") {
echo "Доступ к сайту был закрыт на 24 часа за использование непристойных слов в имени пользователя";
hack("Попытка входа на сайт. Доступ закрыт за использование мата в имени");
?>
die();
}
}
unset($temp);
if ($_SESSION["user_id"]=="") {
// Создаем идентификатор для нового пользователя
$file = fopen("base/id.db", "r");
flock($file,LOCK_EX); $c = fgets ($file, 100); flock($file,LOCK_UN); fclose($file);
$_SESSION["user_id"]=$c;
$c++;
$file = fopen("base/id.db", "w");
flock($file,LOCK_EX); fputs ($file, $c); flock($file,LOCK_UN); fclose($file);
}
// Если не введен ответ, то ошибка
if ((@!$ans) && (@$_SESSION["cur"]>0))
{
?>
$cur--;
}
// проверка введен ли ответ и запись результата. Сбрасываем на значения по умолчанию
if (!isset($_SESSION["cr"])) {$_SESSION["cr"]=0;}
if (!isset($_SESSION["ct_right"])) {$_SESSION["ct_right"]=0;}
// Проверка правильный ли выбран ответ
if ($ans!="")
{
//settype($ans, "integer");
//============================================================ ОТЛАДКА =========================================
// Здесь правильность ответа. Совпадает ли он с тем ответом, что в условии
if ($_SESSION["right"]==trim(strtolower($ans))) {
$_SESSION["ct_right"]++;
} else {
//Записываю информацию в массив ошибок по темам
// записываю в логи ошибок
mistake($_SESSION["quest"],$_SESSION["right"],$ans);
@$t_array[$topic]++;
}
$_SESSION["cr"]++;
// добавляет правльные ответы по темам и неправльиный ответы тоже считаются
//-------------------------------------------------------------------------
}
// Вывод результатов
if (($is_end=="end") && ($name!=""))
{
//Запись в логи
$log=fopen("base/result.db","a") or die ("Ошибка добавление записи");
flock($log,LOCK_EX);
// Проверка сдан тест или нет
$fail_test=0;
if ($_SESSION["ct_right"]>=(($max-1)*80/100)) {
$info.="Зачтено"; } else {$info.="Не зачтено"; $fail_test=1;}
//---------------------------------Запись в личный журнал. Создание ID файла с сертификатом --------------------------
require "include/create_id_file.php";
//---------------------------------Отправка сообщения по почте администратору теста --------------------------
require "include/send_mail.php";
require "include/save_result.php";
//Перенаправляю на другую страницу, чтобы избежать проблем с обновлением страницы. Был такой глюк, когда обновляешь
//страницу и показывает, что ты уже сдавал.
//Страница на которую идет перевод ни на что не влияет. На ней просто выдается информация о результате теста!
?>
exit;
}
// --------------------- ЗДЕСЬ ПРОИСХОДИТ ВЫБОР ТЕСТА ------------------
@$testn=$HTTP_POST_VARS["t"];
if ($testn=="") { @$testn=$HTTP_GET_VARS["t"];}
//Если нажали завершение работы, то сбрасываю все переменные
if (@$HTTP_GET_VARS["c"]=="clear")
{
unset($_SESSION["cur"]);
unset($_SESSION["cr"]);
unset($_SESSION["ct_right"]);
unset($_SESSION["right"]);
$_SESSION = array();
?>
// Не помню зачем поставил close.php?t=. На всякий случай убрал. Если будет глючить надо будет включить обратно
//
?>
Видимо у вас не работает javascript и потому программа не может перенаправить запрос автоматически.
Щелкните на ссылку, чтобы перейти вручную.
exit;
}
//Функция проверки имени на мат и вообще правильное ли это имя
function check_name($name1)
{
$correct_name="0";
@$temp1=file("base/badwords.txt") or die("Не могу файл с ругательными именами!");
for ($i=0;$i
echo $test_base[$testn][1]; ?>
// ------Меню кнопок ИНЕДТИФИКАТОРЫ. Добавить потом
//
?>
Сегодня Вы уже пытались сдать тест и, к сожалению, не набрали необходимого количество баллов для прохождения. В один день вторая попытка пройти тестирование дается в случае если в первый раз Вы набрали более 70% верных ответов.Если же Вы набираете менее 75% повторно тест можно сдать только на следующий день. ";
writelog($name."|0|0|0|".date("d.m.y")."||Тот же|Отказано в тестировании т.к. набрал менее ||");
?>
| echo $test_base[$testn][1]." Версия теста от ". $version; ?> | |
Пользователь: echo $name; ?> [Сообщить об ошибке. Комментировать вопрос] |
|