1 |
vitalif |
2 |
<?php |
2 |
|
|
|
3 |
vitalif |
6 |
// Интерфейс аутентификации + тестирования |
4 |
vitalif |
2 |
// Copyright (c) 2006, Виталий Филиппов [VMX] |
5 |
|
|
|
6 |
vitalif |
6 |
include_once 'lib/config.php'; |
7 |
|
|
include_once 'lib/auth_sc.php'; |
8 |
|
|
error_reporting (E_ALL & ~E_NOTICE); |
9 |
|
|
mysql_start(); |
10 |
vitalif |
2 |
|
11 |
vitalif |
6 |
function delnull (&$a) |
12 |
vitalif |
2 |
{ |
13 |
vitalif |
6 |
for ($i = 0; $i < count ($a); $i++) |
14 |
vitalif |
2 |
{ |
15 |
vitalif |
6 |
if (strlen($a[$i]) == 0) |
16 |
|
|
{ |
17 |
|
|
for ($j = $i; $j < count ($a)-1; $j++) |
18 |
|
|
$a[$j] = $a[$j+1]; |
19 |
|
|
unset ($a[count($a)-1]); |
20 |
|
|
} |
21 |
vitalif |
2 |
} |
22 |
vitalif |
6 |
} |
23 |
|
|
|
24 |
|
|
function putFrmLogin ($login_incorrect) |
25 |
|
|
{ |
26 |
|
|
global $phpbb_path; |
27 |
|
|
$str = query_str_replace ($_SERVER['QUERY_STRING'], 'logout', ''); |
28 |
|
|
echo "<form action=\"?$str\" method=\"POST\"> |
29 |
|
|
<table bgcolor=\"#E0E0FF\" width=\"700\" align=\"center\">\n"; |
30 |
|
|
if ($login_incorrect) |
31 |
|
|
echo "<tr><td align=\"center\" colspan=2><p class=\"frmLoginText\">Данные неверны</p></td></tr>"; |
32 |
|
|
echo "<tr> |
33 |
|
|
<td width=\"40%\"><p align=\"right\" class=\"frmLoginText\">Логин:</p></td> |
34 |
|
|
<td><input name=\"loginedit\" type=\"text\" maxlength=\"256\" class=\"frmLoginEdit\"></td> |
35 |
|
|
</tr> |
36 |
|
|
<tr> |
37 |
|
|
<td><p align=\"right\" class=\"frmLoginText\">Пароль:</p></td> |
38 |
|
|
<td><input name=\"passedit\" type=\"password\" maxlength=\"256\" class=\"frmLoginEdit\"></td> |
39 |
|
|
</tr> |
40 |
|
|
<tr><td align=\"center\" colspan=2><input type=\"submit\" value=\"Вход\" class=\"frmLoginButton\"></td></tr> |
41 |
|
|
<tr><td align=\"center\" colspan=2><p class=\"frmLoginText\"><font size=\"-1\"><a href=\"/register.php\">Зарегистрироваться</a></font></p></td></tr> |
42 |
|
|
</table> |
43 |
|
|
</form>\n"; |
44 |
|
|
} |
45 |
|
|
|
46 |
|
|
function putFrmLogout ($name, $lobtn) |
47 |
|
|
{ |
48 |
|
|
$str = query_str_add ($_SERVER['QUERY_STRING'], 'logout'); |
49 |
|
|
echo "<table bgcolor=\"#FFF0E0\" width=\"700\" align=\"center\"> |
50 |
|
|
<tr><td align=\"center\"><p class=\"frmLoginText\">Здравствуйте, $name!</p></td></tr> |
51 |
|
|
<tr><td align=\"center\">"; |
52 |
|
|
if ($lobtn) |
53 |
|
|
echo "<form action=\"?$str\" method=\"POST\"><input type=\"submit\" value=\"Выход\" class=\"frmLoginButton\"></form>"; |
54 |
|
|
echo "</td></tr></table>"; |
55 |
|
|
} |
56 |
|
|
|
57 |
|
|
function t_err ($str) |
58 |
|
|
{ |
59 |
|
|
echo '<p align="center">' . $str . '</p>'; |
60 |
|
|
exit; |
61 |
|
|
} |
62 |
|
|
|
63 |
|
|
function Testing () |
64 |
|
|
{ |
65 |
|
|
global $result, $QuestionsTable, $ResultsTable, $UsersTable; |
66 |
|
|
global $MatrixWidth, $TriesCount, $TimeLimit; |
67 |
|
|
global $Domain, $VLoginSession; |
68 |
|
|
global $req_cmd, $req_where, $req_display; |
69 |
|
|
session_name ($VLoginSession); |
70 |
|
|
session_set_cookie_params (-1, '/', '.' . $Domain); |
71 |
|
|
@session_start (); |
72 |
|
|
$cur_user_id = get_auth_id (); |
73 |
|
|
// Выполняем команды начала/конца |
74 |
|
|
if (isset ($req_cmd) && $req_cmd == 'start' && !(isset ($_SESSION['TestStarted']) && $_SESSION['TestStarted'] == 1)) |
75 |
vitalif |
2 |
{ |
76 |
vitalif |
6 |
// Считываем, сколько ему вообще ещё можно |
77 |
|
|
$curuid = get_auth_id (); |
78 |
|
|
$result = amysql_query ("SELECT `testlimit` FROM `$UsersTable` WHERE `id`='$curuid' LIMIT 1"); |
79 |
|
|
if (!$result) t_err ("Внутренняя ошибка"); |
80 |
|
|
$row = mysql_fetch_row ($result); |
81 |
|
|
$testlimit = 1 + $row [0] - 1; |
82 |
|
|
if ($testlimit <= 0) |
83 |
|
|
t_err ("Попытка взлома!"); |
84 |
|
|
// Считываем количество вариантов |
85 |
|
|
$result = amysql_query ("SELECT MAX(`varid`) FROM `$QuestionsTable`"); |
86 |
|
|
if (!$result) t_err ("Внутренняя ошибка"); |
87 |
|
|
$row = mysql_fetch_row ($result); |
88 |
|
|
$varcount = 1 + $row[0] - 1; |
89 |
|
|
// Рандомим вариант |
90 |
|
|
$vr = $_SESSION['TestVar'] = rand (1, $varcount); |
91 |
|
|
$_SESSION['TestVarCount'] = $varcount; |
92 |
|
|
// Считываем количество вопросов этого варианта |
93 |
|
|
$result = amysql_query ("SELECT COUNT(`id`) FROM `$QuestionsTable` WHERE `varid`=$vr"); |
94 |
|
|
if (!$result) t_err ("Внутренняя ошибка"); |
95 |
|
|
$row = mysql_fetch_row ($result); |
96 |
|
|
$qn = 1 + $row [0] - 1; |
97 |
|
|
if ($qn <= 0) t_err ("Неизвестный вариант или БД вопросов пуста."); |
98 |
|
|
$_SESSION['TestQCount'] = $qn; |
99 |
|
|
// Уменьшаем лимит |
100 |
|
|
$result = amysql_query ("UPDATE `$UsersTable` SET `testlimit`=`testlimit`-1 WHERE `id`='$curuid' LIMIT 1"); |
101 |
|
|
if (!$result) t_err ("Внутренняя ошибка"); |
102 |
|
|
// Делаем выборку |
103 |
|
|
for ($i = 0; $i < $qn; $i++) |
104 |
|
|
$flg [$i] = false; |
105 |
|
|
for ($i = 0; $i < $qn; $i++) |
106 |
vitalif |
2 |
{ |
107 |
vitalif |
6 |
$rnd = rand (0, $qn-$i-1); |
108 |
|
|
for ($j = 0, $r = -1; $j < $rnd+1; $j++) |
109 |
|
|
do { $r++; } while ($flg [$r]); |
110 |
|
|
$flg [$r] = true; |
111 |
|
|
$_SESSION ["TestQ$i"] = $r; |
112 |
|
|
$_SESSION ["TestA$i"] = 0; // не отвечено |
113 |
|
|
$_SESSION ["TestT$i"] = 0; // количество попыток |
114 |
vitalif |
2 |
} |
115 |
vitalif |
6 |
$_SESSION['TestStartTime'] = time(); |
116 |
|
|
$_SESSION['TestStarted'] = 1; |
117 |
|
|
$_SESSION['TestCurQ'] = 0; |
118 |
vitalif |
2 |
} |
119 |
vitalif |
6 |
else if (isset ($_SESSION['TestStarted']) && $_SESSION['TestStarted'] == 1 && |
120 |
|
|
((isset ($req_cmd) && $req_cmd == 'end') || (isset($TimeLimit) && $TimeLimit > 0 && time () > $_SESSION ['TestStartTime'] + $TimeLimit))) // здесь заложен автовыход по времени |
121 |
vitalif |
2 |
{ |
122 |
vitalif |
6 |
$vr = $_SESSION['TestVar']; |
123 |
|
|
$vqn = $_SESSION['TestQCount']; |
124 |
|
|
// Сначала выстраиваем "правильный" массив |
125 |
|
|
for ($vqi = 0; $vqi < $vqn; $vqi++) |
126 |
|
|
$res [$_SESSION["TestQ$vqi"]] = $_SESSION["TestA$vqi"]; |
127 |
|
|
// И строку для БД |
128 |
|
|
$resstr = ''; |
129 |
|
|
for ($vqi = 0; $vqi < $vqn; $vqi++) |
130 |
|
|
$resstr .= $res [$vqi]; |
131 |
|
|
// Вычисляем количество верных ответов |
132 |
|
|
$result = amysql_query ("SELECT * FROM `$QuestionsTable` WHERE `varid`=$vr ORDER BY `id`"); |
133 |
|
|
if (!$result) t_err ("Внутренняя ошибка"); |
134 |
|
|
for ($rescount = 0, $vqi = 0; $vqi < $vqn; $vqi++) |
135 |
vitalif |
2 |
{ |
136 |
vitalif |
6 |
$arr = mysql_fetch_assoc ($result); |
137 |
|
|
if ($res [-1+$arr['id']] == $arr['rightanswer']) |
138 |
|
|
$rescount++; |
139 |
|
|
} |
140 |
|
|
$respercent = 100 * $rescount / $vqn; |
141 |
|
|
// Заносим результаты в БД |
142 |
|
|
$curdate = date ("Y-m-d"); |
143 |
|
|
$curtime = date ("H:i:s"); |
144 |
|
|
$result = amysql_query ("INSERT INTO `$ResultsTable` SET `id`=DEFAULT, `uid`=$cur_user_id, `varid`=$vr, `date`='$curdate', `time`='$curtime', `answers`='$resstr', `result`=$rescount"); |
145 |
|
|
if (!$result) t_err ("Внутренняя ошибка"); |
146 |
|
|
// Убиваем все использованные переменные уровня сессии |
147 |
|
|
for ($vqi = 0; $vqi < $vqn; $vqi++) |
148 |
|
|
{ |
149 |
|
|
unset ($_SESSION["TestQ$vqi"]); |
150 |
|
|
unset ($_SESSION["TestA$vqi"]); |
151 |
|
|
unset ($_SESSION["TestT$vqi"]); |
152 |
|
|
} |
153 |
|
|
unset ($_SESSION["TestAllA"]); |
154 |
|
|
unset ($_SESSION['TestStarted']); |
155 |
|
|
unset ($_SESSION['TestCurQ']); |
156 |
|
|
unset ($_SESSION['TestQCount']); |
157 |
|
|
unset ($_SESSION['TestVar']); |
158 |
|
|
unset ($_SESSION['TestVarCount']); |
159 |
|
|
// Выводим результат |
160 |
|
|
echo '<table bgcolor="#FFF0E0" width="700" cellspacing="1" class="frmLoginText" align="center">'; |
161 |
|
|
if (isset($TimeLimit) && $TimeLimit > 0 && time () > $_SESSION ['TestStartTime'] + $TimeLimit) |
162 |
|
|
echo "<tr><td align=\"center\">Ваше время вышло.</td></tr>"; |
163 |
|
|
echo "<tr><td align=\"center\">Ваш результат: $rescount = ${respercent}%.</td></tr>"; |
164 |
|
|
echo '</table>'; |
165 |
|
|
unset ($_SESSION['TestStartTime']); |
166 |
|
|
} |
167 |
|
|
// Тестирование уже начато |
168 |
|
|
if (isset ($_SESSION['TestStarted']) && $_SESSION['TestStarted'] == 1) |
169 |
|
|
{ |
170 |
|
|
$vr = $_SESSION['TestVar']; |
171 |
|
|
$cq = $_SESSION['TestCurQ']; |
172 |
|
|
$vqn = $_SESSION['TestQCount']; |
173 |
|
|
echo '<table bgcolor="#FFF0E0" width="700" cellspacing="1" class="frmLoginText" align="center">'; |
174 |
|
|
// Выдаём текущий вариант |
175 |
|
|
echo '<tr><td align="center" bgcolor="#E0E0FF" colspan="2">Идёт тестирование'; |
176 |
|
|
if (isset ($TimeLimit) && $TimeLimit > 0) |
177 |
|
|
{ |
178 |
|
|
$remain = $TimeLimit + $_SESSION['TestStartTime'] - time(); |
179 |
|
|
$remsec = $remain % 60; |
180 |
|
|
$remmin = ($remain / 60) % 60; |
181 |
|
|
$remhr = floor ($remain / 3600); |
182 |
|
|
if ($remsec < 10) $remsec = '0' . $remsec; |
183 |
|
|
if ($remmin < 10) $remmin = '0' . $remmin; |
184 |
|
|
if ($remain < 5*60) |
185 |
|
|
echo "; <font color=#FF4040><b>ВНИМАНИЕ!</b></font> "; |
186 |
|
|
else echo "; "; |
187 |
|
|
echo "осталось времени: $remhr:$remmin:$remsec"; |
188 |
|
|
} |
189 |
|
|
if ($_SESSION['TestVarCount'] > 1) |
190 |
|
|
echo "; ваш вариант: $vr"; |
191 |
|
|
echo '</td></tr>'; |
192 |
|
|
// Выполняем команды, которые работают только в тесте |
193 |
|
|
if (isset ($req_cmd)) |
194 |
|
|
{ |
195 |
|
|
if ($req_cmd == '1' && $_SESSION["TestA$cq"] != 1 && $_SESSION["TestT$cq"] < $TriesCount) |
196 |
vitalif |
2 |
{ |
197 |
vitalif |
6 |
$_SESSION["TestT$cq"]++; |
198 |
|
|
$_SESSION["TestA$cq"] = 1; |
199 |
|
|
$ocq = $cq; do { $cq = ($cq+1) % $vqn; } while ($_SESSION["TestA$cq"] != 0 && $cq != $ocq); |
200 |
|
|
$_SESSION['TestCurQ'] = $cq; |
201 |
|
|
if ($ocq == $cq) |
202 |
|
|
$_SESSION["TestAllA"] = 1; |
203 |
vitalif |
2 |
} |
204 |
vitalif |
6 |
else if ($req_cmd == '2' && $_SESSION["TestA$cq"] != 2 && $_SESSION["TestT$cq"] < $TriesCount) |
205 |
vitalif |
2 |
{ |
206 |
vitalif |
6 |
$_SESSION["TestT$cq"]++; |
207 |
|
|
$_SESSION["TestA$cq"] = 2; |
208 |
|
|
$ocq = $cq; do { $cq = ($cq+1) % $vqn; } while ($_SESSION["TestA$cq"] != 0 && $cq != $ocq); |
209 |
|
|
$_SESSION['TestCurQ'] = $cq; |
210 |
|
|
if ($ocq == $cq) |
211 |
|
|
$_SESSION["TestAllA"] = 1; |
212 |
vitalif |
2 |
} |
213 |
vitalif |
6 |
else if ($req_cmd == '3' && $_SESSION["TestA$cq"] != 3 && $_SESSION["TestT$cq"] < $TriesCount) |
214 |
vitalif |
2 |
{ |
215 |
vitalif |
6 |
$_SESSION["TestT$cq"]++; |
216 |
|
|
$_SESSION["TestA$cq"] = 3; |
217 |
|
|
$ocq = $cq; do { $cq = ($cq+1) % $vqn; } while ($_SESSION["TestA$cq"] != 0 && $cq != $ocq); |
218 |
|
|
$_SESSION['TestCurQ'] = $cq; |
219 |
|
|
if ($ocq == $cq) |
220 |
|
|
$_SESSION["TestAllA"] = 1; |
221 |
vitalif |
2 |
} |
222 |
vitalif |
6 |
else if ($req_cmd == '4' && $_SESSION["TestA$cq"] != 4 && $_SESSION["TestT$cq"] < $TriesCount) |
223 |
vitalif |
2 |
{ |
224 |
vitalif |
6 |
$_SESSION["TestT$cq"]++; |
225 |
|
|
$_SESSION["TestA$cq"] = 4; |
226 |
|
|
$ocq = $cq; do { $cq = ($cq+1) % $vqn; } while ($_SESSION["TestA$cq"] != 0 && $cq != $ocq); |
227 |
|
|
$_SESSION['TestCurQ'] = $cq; |
228 |
|
|
if ($ocq == $cq) |
229 |
|
|
$_SESSION["TestAllA"] = 1; |
230 |
vitalif |
2 |
} |
231 |
vitalif |
6 |
else if ($req_cmd == 'goto') |
232 |
|
|
{ |
233 |
|
|
$_SESSION['TestCurQ'] = $cq = 1 + $req_where - 1; |
234 |
|
|
} |
235 |
vitalif |
2 |
} |
236 |
vitalif |
6 |
// ...и текущий вопрос |
237 |
|
|
$bcq = $_SESSION["TestQ$cq"]; |
238 |
|
|
$result = amysql_query ("SELECT * FROM `$QuestionsTable` WHERE `varid`=$vr ORDER BY `id` LIMIT $bcq, 1"); |
239 |
|
|
if (!$result) t_err ("Внутренняя ошибка"); |
240 |
|
|
$arr = mysql_fetch_assoc ($result); |
241 |
|
|
$btag1 = $btag2 = $btag3 = $btag4 = $bbtag1 = $bbtag2 = $bbtag3 = $bbtag4 = ''; |
242 |
|
|
if ($_SESSION["TestA$cq"] == 1) { $btag1 = '<b>'; $bbtag1 = '</b>'; } |
243 |
|
|
else if ($_SESSION["TestA$cq"] == 2) { $btag2 = '<b>'; $bbtag2 = '</b>'; } |
244 |
|
|
else if ($_SESSION["TestA$cq"] == 3) { $btag3 = '<b>'; $bbtag3 = '</b>'; } |
245 |
|
|
else if ($_SESSION["TestA$cq"] == 4) { $btag4 = '<b>'; $bbtag4 = '</b>'; } |
246 |
|
|
echo '<tr><td height="5"></td></tr><tr><td style="border: thin solid" align="left" colspan="2"><p style="margin: 5 5 5 5"><b>Вопрос ' . ($cq+1) . ': ' . $arr['question'] . '</b></p></td></tr><tr><td height="5"></td></tr>'; |
247 |
|
|
echo '<tr><td' . ($_SESSION["TestA$cq"] == 1 ? ' class="selectorGreen"' : ' class="selectorBlue"') . '>' . (($_SESSION["TestT$cq"] < $TriesCount) ? '<a href="/?cmd=1">' : '') . '<p style="margin: 2 2 2 22; text-indent:-19">' . $btag1 . '1. ' . $arr['answer1'] . $bbtag1 . '</p>' . (($_SESSION["TestT$cq"] < $TriesCount) ? '</a>' : '') . '</td></tr>'; |
248 |
|
|
echo '<tr><td' . ($_SESSION["TestA$cq"] == 2 ? ' class="selectorGreen"' : ' class="selectorOrange"') . '>' . (($_SESSION["TestT$cq"] < $TriesCount) ? '<a href="/?cmd=2">' : '') . '<p style="margin: 2 2 2 22; text-indent:-19">' . $btag2 . '2. ' . $arr['answer2'] . $bbtag2 . '</p>' . (($_SESSION["TestT$cq"] < $TriesCount) ? '</a>' : '') . '</td></tr>'; |
249 |
|
|
echo '<tr><td' . ($_SESSION["TestA$cq"] == 3 ? ' class="selectorGreen"' : ' class="selectorBlue"') . '>' . (($_SESSION["TestT$cq"] < $TriesCount) ? '<a href="/?cmd=3">' : '') . '<p style="margin: 2 2 2 22; text-indent:-19">' . $btag3 . '3. ' . $arr['answer3'] . $bbtag3 . '</p>' . (($_SESSION["TestT$cq"] < $TriesCount) ? '</a>' : '') . '</td></tr>'; |
250 |
|
|
echo '<tr><td' . ($_SESSION["TestA$cq"] == 4 ? ' class="selectorGreen"' : ' class="selectorOrange"') . '>' . (($_SESSION["TestT$cq"] < $TriesCount) ? '<a href="/?cmd=4">' : '') . '<p style="margin: 2 2 2 22; text-indent:-19">' . $btag4 . '4. ' . $arr['answer4'] . $bbtag4 . '</p>' . (($_SESSION["TestT$cq"] < $TriesCount) ? '</a>' : '') . '</td></tr>'; |
251 |
|
|
if (isset ($_SESSION["TestAllA"]) && $_SESSION["TestAllA"]==1) |
252 |
|
|
echo '<tr><td bgcolor="#E0E0FF" align="center" colspan="2">Вы ответили на все вопросы.</td></tr>'; |
253 |
|
|
if ($_SESSION["TestT$cq"] < $TriesCount) |
254 |
|
|
echo '<tr><td align="center" colspan="2">Выберите вариант ответа кликом по его номеру.<br>Осталось попыток: ' . ($TriesCount-$_SESSION["TestT$cq"]) . '</td></tr>'; |
255 |
|
|
else echo '<tr><td align="center" colspan="2"><b>Попытки исчерпаны.</b></td></tr>'; |
256 |
|
|
if ($_SESSION["TestA$cq"] > 0) |
257 |
|
|
echo '<tr><td align="center" colspan="2">Текущий выбранный ответ отмечен <b>полужирным шрифтом</b>.</td></tr>'; |
258 |
|
|
// ...и строку с выбором вопроса |
259 |
|
|
$cqprev = $cq-9; if ($cqprev < 0) $cqprev = 0; |
260 |
|
|
$cqnext = $cq+9; if ($cqnext >= $vqn) $cqnext = $vqn-1; |
261 |
|
|
echo '<tr><td align="center" colspan="2">'; |
262 |
|
|
if (isset($req_display) && $req_display == 'list') |
263 |
vitalif |
2 |
{ |
264 |
vitalif |
6 |
echo "<a href=\"?cmd=goto&where=$cqprev\"><<</a> "; |
265 |
|
|
$cqs = $cq-4; if ($cqs < 0) $cqs = 0; |
266 |
|
|
$cqe = $cq+4; if ($cqe >= $vqn) $cqe = $vqn-1; |
267 |
|
|
for ($cqi = $cqs, $cqi1 = $cqs+1; $cqi <= $cqe; $cqi++, $cqi1++) |
268 |
vitalif |
2 |
{ |
269 |
vitalif |
6 |
if ($_SESSION["TestA$cqi"] == 0) echo '<b>'; |
270 |
|
|
echo "<a href=\"?cmd=goto&where=$cqi\">${cqi1}</a> "; |
271 |
|
|
if ($_SESSION["TestA$cqi"] == 0) echo '</b>'; |
272 |
vitalif |
2 |
} |
273 |
vitalif |
6 |
echo "<a href=\"?cmd=goto&where=$cqnext\">>></a>"; |
274 |
vitalif |
2 |
} |
275 |
|
|
else |
276 |
|
|
{ |
277 |
vitalif |
6 |
echo '<table align="center" class="frmLoginText" bgcolor="#E0E0FF"><tr><td align="center"' . "colspan=$MatrixWidth>"; |
278 |
|
|
$cqi = $cq; if ($cqi > 0) $cqi--; |
279 |
|
|
echo "<a href=\"?cmd=goto&where=$cqi\"><<</a>"; |
280 |
|
|
$cqi = $cq; if ($cqi < $vqn-1) $cqi++; |
281 |
|
|
echo " <a href=\"?cmd=goto&where=$cqi\">>></a></td></tr>"; |
282 |
|
|
$MatrixHeight = ($vqn+$MatrixWidth-1)/$MatrixWidth; |
283 |
|
|
for ($i = 0, $cqi = 0, $cqi1 = 1; $i < $MatrixHeight; $i++) |
284 |
vitalif |
2 |
{ |
285 |
vitalif |
6 |
echo '<tr>'; |
286 |
|
|
for ($j = 0; $j < $MatrixWidth && $cqi < $vqn; $j++, $cqi++, $cqi1++) |
287 |
|
|
{ |
288 |
|
|
echo '<td align="center"'; |
289 |
|
|
if ($cq == $cqi) echo ' style="border: thin solid"'; |
290 |
|
|
if ($_SESSION["TestA$cqi"] == 0) echo ' bgcolor="#FFFFFF"'; |
291 |
|
|
echo '>'; |
292 |
|
|
if ($_SESSION["TestA$cqi"] == 0) echo '<b>'; |
293 |
|
|
echo "<a href=\"?cmd=goto&where=$cqi\">${cqi1}</a>"; |
294 |
|
|
if ($_SESSION["TestA$cqi"] == 0) echo '</b>'; |
295 |
|
|
echo '</td>'; |
296 |
|
|
} |
297 |
|
|
echo '</tr>'; |
298 |
|
|
} |
299 |
vitalif |
4 |
echo '</table>'; |
300 |
vitalif |
2 |
} |
301 |
vitalif |
6 |
echo '</td></tr>'; |
302 |
|
|
// ...а также кнопочку "закончить тестирование" /она сначала спросит подтверждения/ |
303 |
|
|
echo '<tr><td valign="center" bgcolor="#E0E0FF" align="center" colspan="2"><form action="?cmd=end" method="POST"><input class="frmLoginButton" name="endtest" type="submit" value="Закончить тестирование"></form></td></tr>'; |
304 |
|
|
echo '</table>'; |
305 |
vitalif |
2 |
} |
306 |
vitalif |
6 |
else // Или ещё нет... |
307 |
vitalif |
2 |
{ |
308 |
|
|
// Выдаём таблицу результатов ... |
309 |
vitalif |
6 |
$result = amysql_query ("SELECT * FROM `$UsersTable` WHERE `id`=$cur_user_id LIMIT 1"); |
310 |
vitalif |
2 |
$row = mysql_fetch_assoc ($result); |
311 |
vitalif |
6 |
echo "<table width=\"100%\" bgcolor=\"#E0E0FF\" cellspacing=\"0\" style=\"border-color: black; border-width: 1 1 0 1; border-style: solid\" align=\"center\" class=\"frmLoginText\">" |
312 |
vitalif |
2 |
. "<tr><td bgcolor=\"#F0F0FF\" style=\"border-width: 0 0 0 0; border-style: solid\"><p style=\"margin: 2 2 0 2\">ФИО</p></td><td bgcolor=\"#F0F0FF\"><p style=\"margin: 2 2 0 2\">${row['lastname']} ${row['firstname']} ${row['thirdname']}</p></td></tr>" |
313 |
|
|
. "<tr><td bgcolor=\"#E0E0FF\" style=\"border-width: 0 0 0 0; border-style: solid\"><p style=\"margin: 2 2 0 2\">Город</p></td><td><p style=\"margin: 2 2 0 2\">${row['town']}</p></td></tr>" |
314 |
|
|
. "<tr><td bgcolor=\"#F0F0FF\" style=\"border-width: 0 0 0 0; border-style: solid\"><p style=\"margin: 2 2 0 2\">Организация</p></td><td bgcolor=\"#F0F0FF\"><p style=\"margin: 2 2 0 2\">${row['firm']}</p></td></tr>" |
315 |
|
|
. "<tr><td bgcolor=\"#E0E0FF\" style=\"border-width: 0 0 0 0; border-style: solid\"><p style=\"margin: 2 2 0 2\">Должность</p></td><td><p style=\"margin: 2 2 0 2\">${row['position']}</p></td></tr>" |
316 |
|
|
. "<tr><td bgcolor=\"#F0F0FF\" style=\"border-width: 0 0 0 0; border-style: solid\"><p style=\"margin: 2 2 0 2\">E-mail</p></td><td bgcolor=\"#F0F0FF\"><p style=\"margin: 2 2 0 2\">${row['email']}</p></td></tr>" |
317 |
|
|
. "<tr><td bgcolor=\"#E0E0FF\" style=\"border-width: 0 0 0 0; border-style: solid\"><p style=\"margin: 2 2 0 2\">Телефон</p></td><td><p style=\"margin: 2 2 0 2\">${row['phone']}</p></td></tr>" |
318 |
|
|
. "<tr><td bgcolor=\"#F0F0FF\" style=\"border-width: 0 0 0 0; border-style: solid\"><p style=\"margin: 2 2 0 2\">Опыт работы с ViPNet</p></td><td bgcolor=\"#F0F0FF\"><p style=\"margin: 2 2 0 2\">${row['vipnet']}</p></td></tr>" |
319 |
|
|
. "<tr><td bgcolor=\"#E0E0FF\" style=\"border-width: 0 0 0 0; border-style: solid\"><p style=\"margin: 2 2 0 2\">Зарегистрирован</p></td><td><p style=\"margin: 2 2 0 2\">${row['date']} ${row['time']}</p></td></tr>" |
320 |
|
|
. "<tr><td bgcolor=\"#F0F0FF\" style=\"border-width: 0 0 0 0; border-style: solid\"><p style=\"margin: 2 2 0 2\">Логин</p></td><td bgcolor=\"#F0F0FF\"><p style=\"margin: 2 2 0 2\">${row['login']}</p></td></tr>"; |
321 |
vitalif |
6 |
$result = amysql_query ("SELECT CHAR_LENGTH(`answers`), `date`, `time`, `result`, `answers`, `varid` FROM `$ResultsTable` WHERE `uid`=$cur_user_id ORDER BY -`date`, -`time`"); |
322 |
vitalif |
2 |
$row2 = mysql_fetch_assoc ($result); |
323 |
|
|
$lastrow_d = 0; |
324 |
|
|
if ($result || !$row2) |
325 |
|
|
$lastrow_d = 1; |
326 |
|
|
echo "<tr><td bgcolor=\"#E0E0FF\" style=\"border-width: 0 0 $lastrow_d 0; border-style: solid\"><p style=\"margin: 2 2 2 2\">Осталось тестов</p></td><td style=\"border-width: 0 0 $lastrow_d 0; border-style: solid\"><p style=\"margin: 2 2 2 2\">${row['testlimit']}</p></td></tr></table><br>"; |
327 |
|
|
$row = $row2; |
328 |
|
|
if ($result && $row) |
329 |
|
|
{ |
330 |
|
|
$crcnt = 1 + $row['CHAR_LENGTH(`answers`)'] - 1; |
331 |
|
|
echo '<table class="frmLoginText" cellspacing="0" style="border-color: black; border-width: 1; border-style: solid" align="center" width="700" bgcolor="#F0F0FF">'; |
332 |
|
|
echo '<tr><td bgcolor="#E0E0FF" width="25%" style="border-width: 0 1 1 0; border-style: solid" align="center">Вариант теста</td><td width="25%" bgcolor="#E0E0FF" style="border-width: 0 1 1 0; border-style: solid" align="center">Время</td><td width="25%" bgcolor="#E0E0FF" style="border-width: 0 1 1 0; border-style: solid" align="center">Дата</td><td width="25%" bgcolor="#E0E0FF" style="border-width: 0 0 1 0; border-style: solid" align="center">Результат</td></tr>'; |
333 |
|
|
do |
334 |
|
|
{ |
335 |
|
|
$crres = 1 + $row['result'] - 1; |
336 |
|
|
$crper = 100 * $crres / $crcnt; |
337 |
|
|
echo "<tr><td align=\"center\">${row['varid']}</td><td align=\"center\">${row['time']}</td><td align=\"center\">${row['date']}</td><td align=\"center\">$crper% ($crres / $crcnt)</td></tr>"; |
338 |
|
|
} while ($row = mysql_fetch_assoc ($result)); |
339 |
|
|
echo '</table>'; |
340 |
|
|
} |
341 |
vitalif |
6 |
echo '<br>'; |
342 |
|
|
$curuid = get_auth_id (); |
343 |
|
|
$result = amysql_query ("SELECT `testlimit` FROM `$UsersTable` WHERE `id`='$curuid' LIMIT 1"); |
344 |
|
|
if (!$result) t_err ("Внутренняя ошибка"); |
345 |
|
|
$row = mysql_fetch_row ($result); |
346 |
|
|
$testlimit = 1 + $row [0] - 1; |
347 |
|
|
// ... количество предписанных тестов ... |
348 |
|
|
echo '<table style="border-color: black; border-width: 1; border-style: solid" align="center" width="700" class="frmLoginText" bgcolor="#E0E0FF">'; |
349 |
|
|
echo "<tr><td align=\"center\">Ещё можно пройти тестов: $testlimit</td></tr>"; |
350 |
|
|
if ($testlimit > 0) // ... и если можно - кнопочку "начать тестирование" |
351 |
|
|
echo '<tr><td valign="center" align="center"><form action="?cmd=start" method="POST"><input class="frmLoginButton" name="starttest" type="submit" value="Начать тестирование"></form></td></tr>'; |
352 |
|
|
echo '</table>'; |
353 |
vitalif |
2 |
} |
354 |
|
|
} |
355 |
|
|
|
356 |
vitalif |
6 |
import_request_variables("gp", "req_"); |
357 |
|
|
$login_incorrect = false; |
358 |
|
|
$display_name = false; |
359 |
vitalif |
2 |
|
360 |
vitalif |
6 |
$refr = false; |
361 |
|
|
|
362 |
|
|
if (isset ($req_logout) && get_auth_id () > -1) // уже вошёл |
363 |
|
|
clean_auth (); |
364 |
|
|
else if (isset ($req_loginedit) && isset ($req_passedit)) |
365 |
|
|
{ |
366 |
|
|
if (!set_auth ($req_loginedit, $req_passedit)) |
367 |
|
|
$login_incorrect = true; |
368 |
|
|
} |
369 |
|
|
get_auth_id(); |
370 |
vitalif |
2 |
?> |
371 |
vitalif |
6 |
<!-- Здесь "заголовок" страницы --> |
372 |
vitalif |
2 |
|
373 |
vitalif |
6 |
<html> |
374 |
|
|
<head> |
375 |
|
|
<title>Система тестирования слушателей</title> |
376 |
|
|
<meta name="GENERATOR" content="VMX"> |
377 |
|
|
<meta name="description" content="Система тестирования слушателей"> |
378 |
|
|
<meta http-equiv=Content-Type content="text/html; charset=windows-1251"> |
379 |
|
|
<link rel="stylesheet" href="styles.css"> |
380 |
|
|
</head> |
381 |
|
|
<body link=#000000 vlink=#000000 alink=#000000> |
382 |
|
|
<table cellspacing="5" class="frmLoginText" style="border-color: black; border-width: 1; border-style: solid" width="700" bgcolor="#FFF0E0" align="center" cellspacing="0"> |
383 |
|
|
<tr><td align="center" style="border-width: 0 0 1 0; border-color: black; border-style: solid"><b><a href="/"><font size="+1" color="#000000">Система тестирования слушателей</font></a></b><br> </td></tr> |
384 |
|
|
<tr><td > |
385 |
|
|
|
386 |
|
|
<!-- Здесь скрипт продолжается --> |
387 |
|
|
|
388 |
vitalif |
2 |
<?php |
389 |
vitalif |
6 |
|
390 |
|
|
if (!isset($req_logout) && get_auth_id () > -1) // уже вошёл |
391 |
|
|
$display_name = get_auth_displayname(); |
392 |
|
|
if ($display_name !== false) |
393 |
vitalif |
2 |
{ |
394 |
vitalif |
6 |
putFrmLogout ($display_name, !isset($_SESSION['TestStarted']) && (!isset ($req_cmd) || $req_cmd != 'start') || (isset ($req_cmd) && $req_cmd == 'end')); |
395 |
|
|
Testing (); |
396 |
|
|
} |
397 |
|
|
else putFrmLogin ($login_incorrect); |
398 |
|
|
|
399 |
|
|
mysql_finish (); |
400 |
|
|
|
401 |
vitalif |
2 |
?> |
402 |
vitalif |
6 |
|
403 |
|
|
<!-- Здесь конец страницы --> |
404 |
|
|
</td></tr> |
405 |
|
|
<tr><td class="frmLoginText" align="center" style="border-width: 1 0 0 0; border-color: black; border-style: solid">Powered by VMX, 2006</td></tr> |
406 |
vitalif |
2 |
</table> |
407 |
|
|
</body> |
408 |
|
|
</html> |
409 |
|
|
<!-- А здесь совсем конец --> |