subversion://[vpntest]/release/2.0/WWW/index.php Log in
ViewVC logotype

Annotate of /release/2.0/WWW/index.php

Parent Directory Parent Directory | Revision Log Revision Log

Revision 6 - (hide annotations) (download) (as text)
Sun Feb 17 15:04:40 2008 MSK (12 years, 11 months ago) by vitalif
Original Path: head/WWW/index.php
File MIME type: text/x-php; charset=windows-1251
File size: 20643 byte(s)
Commit release 1.1

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\">&lt;&lt;</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\">&gt;&gt;</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\">&lt;&lt;</a>";
280     $cqi = $cq; if ($cqi < $vqn-1) $cqi++;
281     echo " <a href=\"?cmd=goto&where=$cqi\">&gt;&gt;</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>&nbsp;</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     <!-- А здесь совсем конец -->