Данные неверны | |
Логин: |
|
Пароль: |
|
Здравствуйте, $name! |
"; if ($lobtn) echo ""; echo " |
' . $str . '
'; exit; } function Testing () { global $result, $QuestionsTable, $ResultsTable, $UsersTable; global $MatrixWidth, $TriesCount, $TimeLimit; global $Domain, $VLoginSession; global $req_cmd, $req_where, $req_display; session_name ($VLoginSession); session_set_cookie_params (-1, '/', '.' . $Domain); @session_start (); $cur_user_id = get_auth_id (); // Выполняем команды начала/конца if (isset ($req_cmd) && $req_cmd == 'start' && !(isset ($_SESSION['TestStarted']) && $_SESSION['TestStarted'] == 1)) { // Считываем, сколько ему вообще ещё можно $curuid = get_auth_id (); $result = amysql_query ("SELECT `testlimit` FROM `$UsersTable` WHERE `id`='$curuid' LIMIT 1"); if (!$result) t_err ("Внутренняя ошибка"); $row = mysql_fetch_row ($result); $testlimit = 1 + $row [0] - 1; if ($testlimit <= 0) t_err ("Попытка взлома!"); // Считываем количество вариантов $result = amysql_query ("SELECT MAX(`varid`) FROM `$QuestionsTable`"); if (!$result) t_err ("Внутренняя ошибка"); $row = mysql_fetch_row ($result); $varcount = 1 + $row[0] - 1; // Рандомим вариант $vr = $_SESSION['TestVar'] = rand (1, $varcount); $_SESSION['TestVarCount'] = $varcount; // Считываем количество вопросов этого варианта $result = amysql_query ("SELECT COUNT(`id`) FROM `$QuestionsTable` WHERE `varid`=$vr"); if (!$result) t_err ("Внутренняя ошибка"); $row = mysql_fetch_row ($result); $qn = 1 + $row [0] - 1; if ($qn <= 0) t_err ("Неизвестный вариант или БД вопросов пуста."); $_SESSION['TestQCount'] = $qn; // Уменьшаем лимит $result = amysql_query ("UPDATE `$UsersTable` SET `testlimit`=`testlimit`-1 WHERE `id`='$curuid' LIMIT 1"); if (!$result) t_err ("Внутренняя ошибка"); // Делаем выборку for ($i = 0; $i < $qn; $i++) $flg [$i] = false; for ($i = 0; $i < $qn; $i++) { $rnd = rand (0, $qn-$i-1); for ($j = 0, $r = -1; $j < $rnd+1; $j++) do { $r++; } while ($flg [$r]); $flg [$r] = true; $_SESSION ["TestQ$i"] = $r; $_SESSION ["TestA$i"] = 0; // не отвечено $_SESSION ["TestT$i"] = 0; // количество попыток } $_SESSION['TestStartTime'] = time(); $_SESSION['TestStarted'] = 1; $_SESSION['TestCurQ'] = 0; } else if (isset ($_SESSION['TestStarted']) && $_SESSION['TestStarted'] == 1 && ((isset ($req_cmd) && $req_cmd == 'end') || (isset($TimeLimit) && $TimeLimit > 0 && time () > $_SESSION ['TestStartTime'] + $TimeLimit))) // здесь заложен автовыход по времени { $vr = $_SESSION['TestVar']; $vqn = $_SESSION['TestQCount']; // Сначала выстраиваем "правильный" массив for ($vqi = 0; $vqi < $vqn; $vqi++) $res [$_SESSION["TestQ$vqi"]] = $_SESSION["TestA$vqi"]; // И строку для БД $resstr = ''; for ($vqi = 0; $vqi < $vqn; $vqi++) $resstr .= $res [$vqi]; // Вычисляем количество верных ответов $result = amysql_query ("SELECT * FROM `$QuestionsTable` WHERE `varid`=$vr ORDER BY `id`"); if (!$result) t_err ("Внутренняя ошибка"); for ($rescount = 0, $vqi = 0; $vqi < $vqn; $vqi++) { $arr = mysql_fetch_assoc ($result); if ($res [-1+$arr['id']] == $arr['rightanswer']) $rescount++; } $respercent = 100 * $rescount / $vqn; // Заносим результаты в БД $curdate = date ("Y-m-d"); $curtime = date ("H:i:s"); $result = amysql_query ("INSERT INTO `$ResultsTable` SET `id`=DEFAULT, `uid`=$cur_user_id, `varid`=$vr, `date`='$curdate', `time`='$curtime', `answers`='$resstr', `result`=$rescount"); if (!$result) t_err ("Внутренняя ошибка"); // Убиваем все использованные переменные уровня сессии for ($vqi = 0; $vqi < $vqn; $vqi++) { unset ($_SESSION["TestQ$vqi"]); unset ($_SESSION["TestA$vqi"]); unset ($_SESSION["TestT$vqi"]); } unset ($_SESSION["TestAllA"]); unset ($_SESSION['TestStarted']); unset ($_SESSION['TestCurQ']); unset ($_SESSION['TestQCount']); unset ($_SESSION['TestVar']); unset ($_SESSION['TestVarCount']); // Выводим результат echo 'Ваше время вышло. |
Ваш результат: $rescount = ${respercent}%. |
Идёт тестирование'; if (isset ($TimeLimit) && $TimeLimit > 0) { $remain = $TimeLimit + $_SESSION['TestStartTime'] - time(); $remsec = $remain % 60; $remmin = ($remain / 60) % 60; $remhr = floor ($remain / 3600); if ($remsec < 10) $remsec = '0' . $remsec; if ($remmin < 10) $remmin = '0' . $remmin; if ($remain < 5*60) echo "; ВНИМАНИЕ! "; else echo "; "; echo "осталось времени: $remhr:$remmin:$remsec"; } if ($_SESSION['TestVarCount'] > 1) echo "; ваш вариант: $vr"; echo ' | |||
Вопрос ' . ($cq+1) . ': ' . $arr['question'] . ' | |||
' . (($_SESSION["TestT$cq"] < $TriesCount) ? '' : '') . ' ' . $btag1 . '1. ' . $arr['answer1'] . $bbtag1 . ' ' . (($_SESSION["TestT$cq"] < $TriesCount) ? '' : '') . ' | |||
' . (($_SESSION["TestT$cq"] < $TriesCount) ? '' : '') . ' ' . $btag2 . '2. ' . $arr['answer2'] . $bbtag2 . ' ' . (($_SESSION["TestT$cq"] < $TriesCount) ? '' : '') . ' | |||
' . (($_SESSION["TestT$cq"] < $TriesCount) ? '' : '') . ' ' . $btag3 . '3. ' . $arr['answer3'] . $bbtag3 . ' ' . (($_SESSION["TestT$cq"] < $TriesCount) ? '' : '') . ' | |||
' . (($_SESSION["TestT$cq"] < $TriesCount) ? '' : '') . ' ' . $btag4 . '4. ' . $arr['answer4'] . $bbtag4 . ' ' . (($_SESSION["TestT$cq"] < $TriesCount) ? '' : '') . ' | |||
Вы ответили на все вопросы. | |||
Выберите вариант ответа кликом по его номеру. Осталось попыток: ' . ($TriesCount-$_SESSION["TestT$cq"]) . ' | |||
Попытки исчерпаны. | |||
Текущий выбранный ответ отмечен полужирным шрифтом. | |||
';
if (isset($req_display) && $req_display == 'list')
{
echo "<< ";
$cqs = $cq-4; if ($cqs < 0) $cqs = 0;
$cqe = $cq+4; if ($cqe >= $vqn) $cqe = $vqn-1;
for ($cqi = $cqs, $cqi1 = $cqs+1; $cqi <= $cqe; $cqi++, $cqi1++)
{
if ($_SESSION["TestA$cqi"] == 0) echo '';
echo "${cqi1} ";
if ($_SESSION["TestA$cqi"] == 0) echo '';
}
echo ">>";
}
else
{
echo '
| |||
ФИО | ${row['lastname']} ${row['firstname']} ${row['thirdname']} |
Город | ${row['town']} |
Организация | ${row['firm']} |
Должность | ${row['position']} |
${row['email']} | |
Телефон | ${row['phone']} |
Опыт работы с ViPNet | ${row['vipnet']} |
Зарегистрирован | ${row['date']} ${row['time']} |
Логин | ${row['login']} |
Осталось тестов | ${row['testlimit']} |
Вариант теста | Время | Дата | Результат |
${row['varid']} | ${row['time']} | ${row['date']} | $crper% ($crres / $crcnt) |
Ещё можно пройти тестов: $testlimit |
Система тестирования слушателей |
-1) // уже вошёл $display_name = get_auth_displayname(); if ($display_name !== false) { putFrmLogout ($display_name, !isset($_SESSION['TestStarted']) && (!isset ($req_cmd) || $req_cmd != 'start') || (isset ($req_cmd) && $req_cmd == 'end')); Testing (); } else putFrmLogin ($login_incorrect); mysql_finish (); ?> |
Powered by VMX, 2006 |