VPNtest: Подробное руководство — различия между версиями

Материал из YourcmcWiki
Перейти к: навигация, поиск
(Просмотр списка вопросов в БД)
 
(не показано 8 промежуточных версий этого же участника)
Строка 251: Строка 251:
 
=== Просмотр списка вопросов в БД ===
 
=== Просмотр списка вопросов в БД ===
  
Вы можете посмотреть постраничный список ВСЕХ вопросов, на данный момент загруженных в БД. Для этого перейдите по ссылке «нажмите СЮДА». На странице выводится $ElementsPerPage вопросов (см.[[#Конфигурирование системы]]). При выводе версии списка вопросов, предназначенной для печати — выведутся ВСЕ вопросы на одной странице — для удобства. Вывод списка вопросов из рабочей БД и вывод списка вопросов из одного из снимков, находящихся в архиве, принципиально эквивалентны (см.[[#Работа с архивом результатов]]).
+
Вы можете посмотреть постраничный список ВСЕХ вопросов, на данный момент загруженных в БД. Для этого перейдите по ссылке «нажмите СЮДА». На странице выводится $ElementsPerPage вопросов (см. [[#Конфигурирование системы]]). При выводе версии списка вопросов, предназначенной для печати — выведутся ВСЕ вопросы на одной странице — для удобства. Вывод списка вопросов из рабочей БД и вывод списка вопросов из одного из снимков, находящихся в архиве, принципиально эквивалентны (см. [[#Работа с архивом результатов]]).
  
 
=== Загрузка вопросов из текстового файла ===
 
=== Загрузка вопросов из текстового файла ===
  
Вы выбираете любой файл со своего компьютера (см. секцию 5 «Формат файла с вопросами»); задаёте вариант вопросов загружаемого файла — или оставляете его равным 1 — значению по умолчанию; если хотите сначала стереть всё содержимое рабочей БД с вопросами — устанавливаете флажок «Перезаписать БД вопросов»; и нажимаете кнопку «Загрузить вопросы в БД». После этого вопросы будут загружены в БД, а вам будет показан результат операции загрузки вопросов (были ошибки или нет). Также система покажет детальную информацию обо всех этих ошибках.
+
Вы выбираете любой файл со своего компьютера (см. [[#Формат файла с вопросами]]); задаёте вариант вопросов загружаемого файла — или оставляете его равным 1 — значению по умолчанию; если хотите сначала стереть всё содержимое рабочей БД с вопросами — устанавливаете флажок «Перезаписать БД вопросов»; и нажимаете кнопку «Загрузить вопросы в БД». После этого вопросы будут загружены в БД, а вам будет показан результат операции загрузки вопросов (были ошибки или нет). Также система покажет детальную информацию обо всех этих ошибках.
  
 
=== Инициализация БД ===
 
=== Инициализация БД ===
  
Инициализация означает уничтожение и создание заново ВСЕЙ рабочей базы данных. Архивную базу данных эта команда не затрагивает. Инициализация архива производится отдельно, на странице работы с архивом. Таким образом, обычно работа с системой выглядит так: протестировать группу слушателей, отпустить их, архивировать результаты (см. секцию 8 «Работа с архивом результатов»), инициализировать рабочую БД заново, повторить всё заново :)
+
Инициализация означает уничтожение и создание заново ВСЕЙ рабочей базы данных. Архивную базу данных эта команда не затрагивает. Инициализация архива производится отдельно, на странице работы с архивом. Таким образом, обычно работа с системой выглядит так: протестировать группу слушателей, отпустить их, архивировать результаты (см. [[#Работа с архивом результатов]]), инициализировать рабочую БД заново, повторить всё заново :)
  
 
== Работа с архивом результатов ==
 
== Работа с архивом результатов ==
Строка 265: Строка 265:
 
Чтобы попасть в архив, вы можете либо набрать http://www.vpntest.ru/admin/archive.php, либо нажать на ссылку «к архиву» вверху на странице администрирования системы. Точно так же из архива вы можете вернуться обратно к администрированию, нажав на ссылку «к администрированию» вверху на странице с архивом.
 
Чтобы попасть в архив, вы можете либо набрать http://www.vpntest.ru/admin/archive.php, либо нажать на ссылку «к архиву» вверху на странице администрирования системы. Точно так же из архива вы можете вернуться обратно к администрированию, нажав на ссылку «к администрированию» вверху на странице с архивом.
  
Архив устроен как множество снимков рабочей базы данных. Каждый снимок включает в себя и информацию о пользователях, и их результатах, и вопросах тестов, которые они проходили, то есть по сути является просто копией рабочей БД, с которой можно работать абсолютно так же, как и с рабочей, за тем исключением, что пользователи, «сданные в архив», уже не могут проходить тесты, хотя вся информация о них и остаётся. Соответственно, команд «Дать +1 тест», «Отнять 1 тест», «Убрать тесты» здесь нету.
+
Архив устроен, как множество снимков рабочей базы данных. Каждый снимок включает в себя и информацию о пользователях, и их результатах, и вопросах тестов, которые они проходили, то есть по сути является просто копией рабочей БД, с которой можно работать абсолютно так же, как и с рабочей, за тем исключением, что пользователи, «сданные в архив», уже не могут проходить тесты, хотя вся информация о них и остаётся. Соответственно, команд «Дать +1 тест», «Отнять 1 тест», «Убрать тесты» здесь нету.
 +
 
 +
=== Инициализация ===
  
 
Если архив ещё не был инициализирован — выведется только одна команда, отвечающая за его инициализацию. Естественно, для работы с архивом вы должны его инициализировать.
 
Если архив ещё не был инициализирован — выведется только одна команда, отвечающая за его инициализацию. Естественно, для работы с архивом вы должны его инициализировать.
  
Вы можете просматривать список снимков: выведите его, используя кнопку «Показать список снимков» и поля ввода выше неё (ограничения на снимки задаются по абсолютно тем же правилам, что и ограничения для вывода списка пользователей на странице администрирования, только вместо логина здесь используется имя снимка); список снимков выводится постранично. Кликая по кнопкам """ (переход к первой странице), «<" (переход к предыдущей странице), ">» (переход к следующей странице), и """ (переход к последней странице), вы осуществляете навигацию по страницам списка. На одной странице выводится <code>$ElementsPerPage</code> снимков (см. [[#Конфигурирование системы]]).
+
=== Список снимков ===
 +
 
 +
Вы можете просматривать список снимков: выведите его, используя кнопку «Показать список снимков» и поля ввода выше неё (ограничения на снимки задаются по абсолютно тем же правилам, что и ограничения для вывода списка пользователей на странице администрирования, только вместо логина здесь используется имя снимка); список снимков выводится постранично. Кликая по кнопкам "<<" (переход к первой странице), "<" (переход к предыдущей странице), ">" (переход к следующей странице), и ">>" (переход к последней странице), вы осуществляете навигацию по страницам списка. На одной странице выводится <code>$ElementsPerPage</code> снимков (см. [[#Конфигурирование системы]]).
 +
 
 +
=== Просмотр снимка ===
  
 
Далее, выбирая снимок из списка, вы можете просматривать данные, сохранённые в этом снимке. Когда снимок уже выбран, над списком команд отобразится табличка с информацией о снимке (его именем и датой-временем снятия) в заголовке, командами для просмотра данных снимка в центре и командой удаления списка внизу. Удаление производится после подтверждения, выдаваемого при нажатии на ссылку «Удалить снимок».
 
Далее, выбирая снимок из списка, вы можете просматривать данные, сохранённые в этом снимке. Когда снимок уже выбран, над списком команд отобразится табличка с информацией о снимке (его именем и датой-временем снятия) в заголовке, командами для просмотра данных снимка в центре и командой удаления списка внизу. Удаление производится после подтверждения, выдаваемого при нажатии на ссылку «Удалить снимок».
 +
 +
==== Список пользователей ====
  
 
Кликнув по пункту «Список пользователей», вы выведете список ВСЕХ пользователей, сохранённых в снимке, в виде таблички, аналогичной табличке вывода информации о пользователей из рабочей базы данных. При клике по ссылке «…» в скобках рядом с пунктом «Список пользователей» выведется форма задания ограничений на поиск пользователей, аналогичная таковой на странице администрирования. Вся разница только в том, что здесь вы работаете со снимком, находящимся в архиве.
 
Кликнув по пункту «Список пользователей», вы выведете список ВСЕХ пользователей, сохранённых в снимке, в виде таблички, аналогичной табличке вывода информации о пользователей из рабочей базы данных. При клике по ссылке «…» в скобках рядом с пунктом «Список пользователей» выведется форма задания ограничений на поиск пользователей, аналогичная таковой на странице администрирования. Вся разница только в том, что здесь вы работаете со снимком, находящимся в архиве.
  
 
После показа списка пользователей вы точно так же, как и при администрировании, можете вывести версию для печати, или подробную информацию о всех результатах выбранных пользователей. Команды разрешения/запрещения прохождения тестов, естественно, запрещены, так как пользователи уже «сданы в архив», как было уже сказано выше.
 
После показа списка пользователей вы точно так же, как и при администрировании, можете вывести версию для печати, или подробную информацию о всех результатах выбранных пользователей. Команды разрешения/запрещения прохождения тестов, естественно, запрещены, так как пользователи уже «сданы в архив», как было уже сказано выше.
 +
 +
==== Список вопросов ====
  
 
Кликнув по пункту «Список вопросов», вы выведете постраничный список всех вопросов, сохранённых в снимке, отсортированный по номеру варианта и номеру вопроса. На странице выводится $ElementsPerPage вопросов. Вопросы выводятся списком, под каждым вопросом выдаются его варианты ответа, правильный из которых отмечается более тёмным рыжим фоном. Постраничная навигация осуществляется так же, как и в списке снимков. При выборе «Версии для печати» списка вопросов — отобразятся сразу все вопросы на одной странице в удобном для печати / сохранения виде.
 
Кликнув по пункту «Список вопросов», вы выведете постраничный список всех вопросов, сохранённых в снимке, отсортированный по номеру варианта и номеру вопроса. На странице выводится $ElementsPerPage вопросов. Вопросы выводятся списком, под каждым вопросом выдаются его варианты ответа, правильный из которых отмечается более тёмным рыжим фоном. Постраничная навигация осуществляется так же, как и в списке снимков. При выборе «Версии для печати» списка вопросов — отобразятся сразу все вопросы на одной странице в удобном для печати / сохранения виде.
Строка 282: Строка 292:
  
 
Другими командами работы с инициализированным архивом будут: создание нового снимка и уничтожение архива.
 
Другими командами работы с инициализированным архивом будут: создание нового снимка и уничтожение архива.
 +
 +
=== Создание снимка ===
  
 
Чтобы создать новый снимок, вы должны вписать имя для нового снимка в поле «Имя снимка» и нажать либо Enter, либо кнопку «Сделать снимок». После отработки программы у вас появится новый снимок базы данных, являющийся практически точной её копией. Практически — потому что ID’ы пользователей при создании снимка не сохраняются во избежание дублированных индексов в таблице.
 
Чтобы создать новый снимок, вы должны вписать имя для нового снимка в поле «Имя снимка» и нажать либо Enter, либо кнопку «Сделать снимок». После отработки программы у вас появится новый снимок базы данных, являющийся практически точной её копией. Практически — потому что ID’ы пользователей при создании снимка не сохраняются во избежание дублированных индексов в таблице.
 +
 +
=== Уничтожение архива ===
  
 
Чтобы уничтожить архив, вам придётся сначала подтвердить свои действия в появляющемся на экране после клика на кнопке «Уничтожить архив» окне.
 
Чтобы уничтожить архив, вам придётся сначала подтвердить свои действия в появляющемся на экране после клика на кнопке «Уничтожить архив» окне.
 +
 +
[[Категория:Архив]]
 +
[[Категория:Перенесено с vmx.yourcmc.ru]]

Текущая версия на 15:42, 20 июня 2016

Краткая информация

  • Назначение системы: тестирование слушателей и хранение архива их результатов.
  • Последняя версия: 2.32, 31 августа 2006.
  • Список изменений: см. VPNtest или changelog.txt в архиве дистрибутива.
  • Автор: Виталий Филиппов.

Скачать новую версию системы и руководство по её использованию всегда можно со страниц vmx.yourcmc.ru/filelist.php?file=11 или VPNtest.

Установка системы

Здесь приведены пошаговые инструкции для установки и обновления системы. Если вашей версии нет в списке инструкций к обновлению — воспользуйтесь ближайшими версиями.

Установка в локальной сети

Нужно выделить компьютер администратора, этот компьютер будет выступать сервером для остальных. Выбрать имя для виртуального «сайта» с тестами (по умолчанию «vpntest.ru» — в инструкции по установке везде прописано оно, если хотим другое, везде меняем).

  1. Поставить на админский комп Денвер (Д.н.w.р) — Джентльменский Набор Web-разработчика.
    • Дистрибутив Денвера, с которым проводилась проверка системы, можно скачать здесь,
    • Если на админском компе уже установлены Apache, PHP, и MySQL, то используйте их, но если они у вас установлены не в составе чего-нибудь типа Денвера, то вы, скорее всего, продвинутый пользователь и настроите всё сами,
    • Если чего-то нету (например, установлен только Apache) — то проще всего удалить его и поставить Денвер.
    Иногда бывает, что Денвер по каким-то причинам не в состоянии ни создать ярлыки, ни прописать в автозагрузке монтирование виртуального диска. Если ярлыки не появятся, тогда создать их вручную — на рабочем столе — ярлыки на <ПАПКА_С_ДЕНВЕРОМ>\etc\Run.exe (запуск серверов), <ПАПКА_С_ДЕНВЕРОМ>\etc\Restart.exe (перезапуск серверов) и <ПАПКА_С_ДЕНВЕРОМ>\etc\Stop.exe (остановка серверов). Виртуальный диск создаётся консольной утилитой subst командой вида «subst Z: <ПАПКА_С_ДЕНВЕРОМ>». Чтобы прописать в автозагрузку создание виртуального диска — создайте ярлык, ссылающийся на команду, указанную выше, в папке «Автозагрузка» меню «Пуск».
  2. Запускаем Денвер. («Start Servers»)
  3. Чтобы поменять пароль root’а на базу данных:
    • зайти в броузере на http://localhost/Tools/phpMyAdmin/,
    • выбрать «Привилегии»,
    • кликнуть по иконке «Редактирование привилегий» справа от строки с пользователем «root»,
    • там установить Пароль и Подтверждение пароля,
    • выбрать радиокнопку рядом со словом «Пароль»,
    • нажать «Пошёл».
  4. Останавливаем Денвер. («Stop Servers»)
  5. Пусть Z:\ — виртуальный диск, созданный Денвером:
    • Из папки Z:\home удаляем всё, что там есть, КРОМЕ
    • Папки localhost — её можно оставить. Лучше тоже убрать, однако не полностью — просто возьмите и переместите её куда-нибудь себе, иначе потом не сможете пользоваться phpMyAdmin (что, правда, при нормальной работе системы и не требуется).
  6. Создать в Z:\home папку с именем хоста (vpntest.ru) и распаковать в неё архив с дистрибутивом системы.
  7. Конфигурируем систему тестирования, изменяя Z:\home\vpntest.ru\WWW\lib\config.php. (см. #Конфигурирование системы)
  8. Устанавливаем пароль администратора:
    • набираем в командной строке Z:\usr\local\apache\bin\htpasswd -с Z:\home\vpntest.ru\passwords ЛОГИН_АДМИНА,
    • дважды вводим пароль, который станет паролем администратора.
  9. Потом, чтобы всё-таки можно было зайти в папку /admin/:
    • в файлах Z:\home\vpntest.ru\WWW\admin\.htaccess и Z:\home\vpntest.ru\WWW\lib\.htaccess меняем строчку Require user vmx на Require user ЛОГИН_АДМИНА, где ЛОГИН_АДМИНА — желаемый логин администратора,
    • если меняли vpntest.ru или имя диска, то в этих же файлах .htaccess надо в строчке AuthUserFile Z:\home\vpntest.ru\passwords вместо Z:\home\vpntest.ru\passwords прописать полный путь к файлу с паролями (по умолчанию — не надо)
    • если поддаться соблазну и скопировать строчку отсюда в командную строку через буфер обмена, то htpasswd работать отказывается. Почему — непонятно. В общем, не поддавайтесь соблазну — вводите ручками :)
  10. Вписать в Z:\usr\local\apache\conf\httpd.conf строчку Listen *:80 — чтобы можно было заходить в систему тестирования с других компьютеров.
  11. Если хотим, чтобы другие компы видели систему как домен, именем, то вписываем на всех компах локальной сети, кроме админского (тут Денвер сам разберётся) в файл C:\WINDOWS\SYSTEM32\DRIVERS\ETC\hosts (для Windows 9x C:\WINDOWS\hosts.sam) строчку вида 192.168.0.10 vpntest.ru, где 192.168.0.10 заменить на IP админского компа, а vpntest.ru — на установленное имя виртуального домена.
  12. Запускаем Денвер. («Start Servers»)
  13. В браузере зайдите на http://vpntest.ru/admin/:
    • вводим ЛОГИН_АДМИНА и соответствующий пароль в высвечивающееся окошко аутентификации,
    • жмём «Инициализировать БД».
  14. В браузере же зайдите на кликните по ссылке под названием страницы: «к архиву» и произведите его инициализацию кликом по предлагаемой ссылке.
  15. Загружаем вопросы, выбирая подготовленный заранее текстовый файл и нажимая «Загрузить». (см. секцию 5 «Формат файла с вопросами»)
  16. Если в браузере установлена работа через прокси-сервер, то виртуальный «домен» открываться не будет. Прокси надо везде отключить. На всех компьютерах.
  17. Поздравляю! Система готова к работе.

Установка на реальный сервер

Систему можно поставить на «реальный» веб-сервер, т.е отдельную машину, имеющую выделенный IP-адрес в интернете, с установленными на ней веб-сервером, сервером MySQL и модулем PHP; или на хостинг — любой, можно платный, можно бесплатный, главное — это веб-сервер+PHP+MySQL.

Для установки на реальный веб-сервер:

  1. Убедитесь, что на этом сервере (или хостинге) есть PHP и MySQL. Если сервер и нету, установите, но в данном случае Денвером, конечно, пользоваться не надо.
  2. Вы должны получить в своё использование одну базу данных MySQL: «vpntest», а также имя пользователя MySQL и пароль. Скорее всего, Вам понадобится вручную создать БД, так как привилегий на программный запрос создания базы данных у Вас, скорее всего, не будет.
  3. Также узнайте имя хоста, на котором запущен сервер MySQL. Для хостингов эту информацию Вам сообщит хостинг-провайдер, для сервера — администратор.
  4. Далее вы должны установить систему в предоставленный вам HTTP каталог сервера. Это НЕ ЗНАЧИТ распаковать туда архив. HTTP каталог — это папка «WWW», в архиве она есть, и вы должны её содержимое залить в HTTP каталог сервера.
  5. Теперь отконфигурируйте систему: в config.php вы должны прописать правильные значения переменных $dbhost, $dbuser, $dbpwd, $Domain (см. config.php и комментарии в нём, а также секцию 6 «Конфигурирование системы»).
  6. Установка пароля администратора происходит так же, как и обычно. Утилитой htpasswd создаётся файл паролей, который кладётся желательно в недоступный по HTTP каталог (т.е НЕ в папку WWW), в .htaccess прописывается полный путь к этому файлу.
  7. Зайдите на сайт, который вы только что создали, на http://www.site.ru/admin/, введите имя и пароль администратора, «инициализируйте БД», потом зайдите в архив и инициализируйте его.

Обновление системы

Если обновляем, например, с 1.0 на 2.0, то надо сначала сделать обновление с 1.0 на 1.1, потом с 1.1 на 2.0. То есть, обновления «накапливаются».

Обновление с 1.0 на 1.1:

  1. копируем всё из архива vpntest_v11.rar, заменяя всё, кроме .htaccess-ов и config.php
  2. заходим на http://www.vpntest.ru/admin/update.php

Обновление с 1.1 на 2.x:

  1. копируем всё из архива vpntest_v21.rar, заменяя всё, кроме .htaccess-ов
  2. config.php берём из архива и конфигурируем заново.
  3. инициализируем архив: заходим в него — сначала на http://www.vpntest.ru/admin/, там ссылку «к архиву», там выбираем инициализацию.

Обновление с 2.1x на 2.2:

  1. копируем всё из архива vpntest_v22.rar, заменяя всё, кроме .htaccess-ов
  2. config.php берём из архива и конфигурируем заново.

Обновление с 2.2 на 2.3: копируем всё из архива vpntest_v23.rar, заменяя всё, кроме .htaccess-ов и config.php

Обновление с 2.3 на 2.31: копируем всё из архива vpntest_v231.rar, заменяя всё, кроме .htaccess-ов и config.php

Обновление с 2.31 на 2.32:

  1. копируем всё из архива vpntest_v232.rar, заменяя всё, кроме .htaccess-ов
  2. config.php берём из архива и конфигурируем заново.

Общая информация о системе

Процесс тестирования

Система предназначена для тестирования слушателей. Тестирование в данном случае означает, что есть набор или несколько наборов вопросов, на каждый из которых есть 4 ответа, из которых можно выбирать правильный. Правильный ответ ТОЛЬКО один. Если слушатель не отвечает на вопрос — это приравнивается к неправильному ответу. Каждый «набор» вопросов — это вариант теста. Вариант при тестировании выбирается СЛУЧАЙНО; вопросы внутри него СЛУЧАЙНЫМ образом перемешиваются. Результаты тестирования сохраняются ТОЛЬКО после того, как пользователь нажмёт кнопку «Закончить тестирование». Потом администратор, естественно, сможет посмотреть ответы слушателей в правильном порядке.

Существует возможность ограничить (см. #Конфигурирование системы):

  • время прохождения теста — за это отвечает конфигурационная переменная $TimeLimit,
  • ограничить количество раз, сколько ещё пользователь сможет НАЧАТЬ тестирование,
  • ограничить количество раз, сколько пользователь сможет менять свой ответ на один и тот же вопрос.

Чтобы пройти тест, каждый слушатель сначала будет должен зарегистрироваться в системе, кликнув по ссылке «Зарегистрироваться» на главной странице системы тестирования. При этом он будет ДОЛЖЕН заполнить анкету. Далее администратор сможет просматривать информацию обо ВСЕХ слушателях, а каждый из них — ТОЛЬКО о себе и своих результатах. Также каждый пользователь может править свою анкету и менять пароль. Для этого ему надо выбрать «Править анкету…» на странице просмотра анкеты и результатов (на главной странице).

Пользователь НЕ СМОЖЕТ проходить тесты, если администратор не добавит ему одну или несколько возможных попыток, используя систему администрирования. (см. #Администрирование системы)

Пользователь также НЕ СМОЖЕТ проходить тесты, если база данных вопросов пуста. Информация о формате файла с вопросами — смотрите секцию «Формат файла с вопросами».

Сама система

Сама система написана на веб-языке программирования PHP (требуется версия PHP не ниже 4.3.10), что делает её независимой от операционной системы — главное, что ей требуется — это подходящая программа-WWW-сервер (например, Apache), интерпретатор PHP >= 4.3.10, подключённый к WWW-серверу, и СУБД MySQL. Другие СУБД пока НЕ поддерживаются.

Для начала работы с системой наберите в адресной строке браузера http://www.vpntest.ru или другое заданное вами при установке доменное имя. Чтобы перейти в администраторский раздел, вы ДОЛЖНЫ знать логин и пароль админстратора, с которыми вы будете заходить на http://www.vpntest.ru/admin/

Файлы, относящиеся к системе

Директорией, в которую устанавливается система, является Z:\home\vpntest.ru, где Z — имя виртуального диска, создаваемого Денвером, а vpntest.ru — желаемое имя виртуального домена, на котором будет расположена система тестирования. Внимание! Когда сервера Денвера уже запущены, вы НЕ ДОЛЖНЫ менять имя этой папки.

Внутрь этой директории вы распаковываете архив с дистрибутивом системы. После установки подпапка WWW эквивалентна корню сайта vpntest.ru. В самой папке WWW расположены файлы, отвечающие за пользовательскую часть системы — часть, отвечающую за регистрацию и тестирование. В WWW/admin/ расположена администраторская часть системы. В WWW/lib/ расположены библиотеки функций, используемые системой при работе, а также config.php — конфигурационный файл. (см. #Конфигурирование системы)

Доступ ко всем директориям, кроме WWW/, должен быть закрыт для простых пользователей, для этого рекомендуется использовать HTTP-метод аутентификации (посредством .htaccess).

Способ вывода информации

Вся информация, выводимая данной системой, представляется в формате HTML и выводится на экран через обычный WEB-браузер. Вы можете установить систему на своём компьютере и проверять себя; вы можете установить её на выделенный компьютер локальной сети, чтобы тестирование проходить могли пользователи со всех компьютеров локальной сети; вы можете установить её даже на веб-сайт и тогда пользователи со всего интернета смогут заходить к вам и проходить тестирование. Соответственно, при просмотре ЛЮБОЙ страницы вы можете воспользоваться командой браузера «Сохранить страницу», а дальше сможете, например, открывать её в текстовых процессорах, которые поддерживают работу с HTML.

Система хранения информации

ВСЕ данные, которые система использует при работе, хранятся в базе данных. Для работы с базой данных система использует СУБД MySQL. Сервер MySQL устанавливается тогда, когда вы устанавливаете Денвер. Он, конечно, может быть установлен и отдельно. За хранение базы данных отвечает MySQL! Данная система об этом не задумывается. Обычно (если вы не меняли это название) база данных, относящаяся к системе тестирования слушателей, называется vpntest и хранится в Z:/usr/local/mysql4/data/vpntest. Файлы, которые находятся в этой директории, трогать НЕ НАДО. Если вы хотите сделать резервную копию базы данных — вы всегда можете воспользоваться phpMyAdmin; в следующих версиях планируется добавить возможность резервного копирования и восстановления базы данных целиком.

В данном руководстве используются термины «рабочая база данных» и «архивная база данных». На самом деле — БД одна, но состоит из двух частей: рабочих таблиц (по умолчанию users, results, questions) и архивных таблиц (по умолчанию snapshots, snapshots_users, snapshots_results, snapshots_questions). Идея в том, что архивные таблицы затрагиваются при работе ТОЛЬКО с архивом. Ни «Инициализация БД», ни другие команды администрирования, ни система прохождения тестов НЕ ЗАТРАГИВАЮТ архив. То есть, будьте спокойны: при выборе «Инициализации БД» архив останется жив :)

Аутентификация и безопасность

Для аутентификации слушателей, а также для самого тестирования используются переменные уровня сессии. Сессия начинается тогда, когда слушатель войдёт в систему, а заканчивается, когда выйдет. Каждой сессии присваивается SID — уникальный идентификатор сессии. ДОСТАТОЧНО иметь этот идентификатор, чтобы зайти в сессию. То есть, если злоумышленник «подсмотрит» SID — то, пока пользователь не вышел, злоумышленник сможет зайти от его имени. Обычно SID сохраняется в «куках» (HTTP Cookies), и нигде не виден. Чтобы его получить из cookie, будет требоваться открыть и проанализировать файл, в котором она хранится.

Для аутентификации администратора используется метод HTTP-аутентификации — его логин и пароль хранятся в отдельном файле — в том самом файле «passwords», который вы создаёте при установке. Доступ к панели администрирования ограничивается ТОЛЬКО этим паролем — так что при установке на сайт делайте этот пароль сложным для взлома.

Переменные уровня сессии используются также и для сохранения результатов тестирования, пока слушатель не закончил тестирование. То есть, если сессия обрывается, результаты не сохраняются вовсе. Обрыв связи не является обрывом сессии. Однако, при закрытии броузера SID теряется и, таким образом, сессия прерывается.

То есть, если во время тестирования у вас оборвалась связь — не закрывайте броузер и постарайтесь её восстановить. Если она будет восстановлена, вы сможете продолжить тестирование. Однако, время тестирования при этом идёт, т.е временной лимит уменьшается.

Формат файла с вопросами

Файл с вопросами — это файл формата PLAIN TEXT — «чистый текст» — *.txt.

В файле с вопросами записана последовательность вопросов. Каждый вопрос относится к некоторому варианту; вариант задаётся при загрузке файла в базу данных сразу для ВСЕХ вопросов из этого файла, по умолчанию — вариант 1.

Вопрос — это 5 строк: на первой записаны номер вопроса и его текст, на следующих четырёх — четыре варианта возможных ответов на этот вопрос. ВСЕ вопросы должны быть пронумерованы: первая строка ДОЛЖНА выглядеть как «ЧИСЛО. ТЕКСТ ВОПРОСА» — после числа (номера вопроса) ДОЛЖНА стоять точка и пробел.

Тот вариант ответа, перед которым в начале строки написан символ *, считается правильным. Правильный вариант ответа ТОЛЬКО один. Если звёздочкой отмечено несколько вариантов — последний из них будет выбран как правильный.

ВСЕ строки файла перед обработкой подвергаются trim’у, то есть удалению пробелов и табуляций из начала и конца строки. То есть, отступы у каждой строки вы МОЖЕТЕ делать произвольные — на загрузку вопросов это не влияет.

Комментарий — строка, после trim’а начинающаяся с трёх точек с запятой («;;;»). При загрузке файла учитываются ТОЛЬКО значащие строки — т.е непустые после trim’а строки, не являющиеся комментариями. То есть, вы можете вставлять комментарии и пустые строки в ЛЮБОЕ место файла.

Логично, что файл с вопросами принадлежит какому-то тесту, а тест имеет название. При загрузке файла с вопросами название теста обновляется, даже если перезапись БД вопросов не требуется. Название теста задаётся в файле с вопросами в строках, начинающихся с «###» (трёх решёток). Все эти строки склеиваются через
(для HTML это перевод строки) и сохраняются как название теста.

И вопросы, И ответы — это не просто текст: позволяется HTML-код. Например, чтобы вставить в текст вопроса или ответа перевод строки, вы должны написать «
» (без кавычек). Чтобы вставить в текст вопроса или ответа картинку — вы должны написать <img src="путь_к_картинке">. Путь к картинке задаётся относительно корня директории WWW. РЕКОМЕНДУЕТСЯ писать пути в стиле <img src="/dir1/dir2/.../img.png"> — тогда вы будете абсолютно уверены в том, что картинки везде отобразятся корректно и возьмутся из /home/vpntest.ru/WWW/dir1/dir2/…/img.png (или, если вы меняли имя домена — вместо vpntest.ru будет оно).

В качестве корневого каталога «/» в этом файле везде, кроме ссылок и картинок, скорее всего имеется ввиду корень виртуального диска, создаваемого Денвером (по умолчанию это «Z:\»).

Пример файла с вопросами вы можете посмотреть в файле testq.txt из архива.

Конфигурирование системы

Система нуждается в конфигурировании — особенно сразу после установки. Конфигурирование осуществляется путём редактирования файла WWW/lib/config.php. В начале этого файла расположены конфигурационные переменные с комментариями к ним. В этой секции руководства приведены комментарии ко всем конфигурационным переменным, а также стандартная последовательность действий при начальном конфигурировании системы.

Конфигурационные переменные

Значение каждой переменной задаётся как строка: «$переменная = значение;»

  • $dbhost: адрес (или IP) хоста, на котором запущен сервер СУБД MySQL.
Значение по умолчанию: localhost.
Менять: обычно не требуется.
  • $dbuser: имя пользователя MySQL.
Значение по умолчанию: root.
Менять: по умолчанию — не требуется; однако создав нового пользователя с меньшими, чем у root, привилегиями может немного поднять уровень безопасности.
  • $dbpwd: пароль пользователя MySQL.
Значение по умолчанию: "" (пустой пароль).
Менять: требуется сразу после установки и при смене пароля на доступ к БД.
Замечание: да, пароль к БД хранится в открытом виде в конфигурационном файле. Однако, даже если убрать .htaccess, доступ к нему пользователи не получат, т.к config.php лишь проинтерпретируется PHP и ничего не выдаст на экран.
  • $db: имя базы данных, используемой для хранения информации системой.
Значение по умолчанию: vpntest.
Менять: обычно не требуется. Требуется только в том случае, если у вас уже есть БД «vpntest», не относящаяся к данной системе тестирования.
  • $UsersTable: имя таблицы, используемой для хранения рабочей информации о слушателях.
Значение по умолчанию: users.
Менять: обычно не требуется.
  • $ResultsTable: имя таблицы, используемой для хранения рабочей информации о результатах тестирований cлушателей.
Значение по умолчанию: </code>results</code>.
Менять: обычно не требуется.
  • $QuestionsTable: имя таблицы, используемой для хранения рабочих вопросов.
Значение по умолчанию: questions.
Менять: обычно не требуется.
Значение по умолчанию: snapshots.
Менять: обычно не требуется.
  • $VLoginSession: имя HTTP-сессии, используемой для обозначения аутентификации пользователя.
Значение по умолчанию: vmxlsess.
Менять: обычно не требуется.
  • $Domain: имя домена (в нашем случае обычно виртуального), на котором установлена система.
Значение по умолчанию: vpntest.ru.
Менять: требуется после установки, если вы выбрали другое имя виртуального домена.
  • $MatrixWidth: ширина матрицы с номерами вопросов, которую увидят пользователи при прохождении теста.
Значение по умолчанию: 10.
Менять: можно.
  • $TriesCount: количество попыток ответа на один вопрос. Больше, чем это число раз, поменять выбранный ответ на другой слушатель не сможет (первая попытка ответа включается).
Значение по умолчанию: 3.
Менять: можно.
  • $TimeLimit: временной лимит прохождения теста в секундах. Если значение меньше или равно 0, временной лимит отключён. Если строка с этой переменной закомментирована — временной лимит отключён.
Значение по умолчанию: 5400 = 60*90 (то есть, полтора часа)
Менять: можно.
  • $ElementsPerPage: количество записей на одной странице при постраничном просмотре больших объёмов данных.
Значение по умолчанию: 20.
Менять: можно.

Что вы ДОЛЖНЫ поменять после установки

После установки системы, если все настройки, кроме пароля на БД, вы оставили равными значениями по умолчанию — вы ДОЛЖНЫ установить лишь правильное значение переменной $dbpwd.

Администрирование системы

Администрирование системы производится с помощью http://www.vpntest.ru/admin/. Первым, что вы увидите, когда введёте логин и пароль администратора, будет список возможных операций, состоящий из операций, перечисленных ниже. При клике «Версия для печати» на любой странице — система постарается выдать наиболее удобную для печати или сохранения в HTML-файл страницу. С версии для печати всегда можно вернуться кликом по ссылке «Назад» внизу страницы.

Вывод информации о пользователях

Вы задаёте подстроку, содержащуюся в логине требуемых пользователей либо дату, после или в которую они зарегистрировались, и нажимаете кнопку «Искать пользователей». После этого система выдаст вам табличку с информацией о найденных пользователях, соответствовавших заданному критерию поиска. Внимание! Если задана дата, позже которой регистрировались требуемые пользователи — поле «логин» игнорируется.

В таблице будут перечислены пользователи и информация о них. Если кликнете по логину — логин попадёт в поле «Логин» команды «Вывод информации о пользователях». Справа, в колонке «Результат», отображается ПОСЛЕДНИЙ результат прохождения теста пользователем и ссылка «…», при клике по которой вы попадёте на страницу с информацией о пользователе и кратко — всех его результатах.

Флажки рядом с логинами пользователей служат для выбора лишь некоторых пользователей из списка.

Кроме того, под таблицей будет отображён список действий, которые в данный момент возможно применить к выбранным пользователям.

Это команды (следующие действия влияют ТОЛЬКО на отмеченных флажками пользователей):

  • «+1 тест» — при нажатии на эту кнопку отмеченным флажками пользователям будет разрешено пройти ещё один тест.
  • «-1 тест» — при нажатии на эту кнопку у тех отмеченных флажками пользователей, кто ещё может проходить тесты, отберётся одна возможность пройти тест.
  • «Обнулить тесты» — после нажатия на эту кнопку отмеченные флажками пользователи не смогут проходить тесты до следующего разрешения.
  • «Удалить слушателей» — после подтверждения ПОЛНОСТЬЮ удалить отмеченных флажками пользователей вместе с их результатами. Операцию отменить невозможно.


Следующие два действия отображаются как ссылки, а не кнопки, и действуют на ВСЕХ выведенных в таблице слушателей, а не только на отмеченных флажками.

  • «Версия для печати» — отобразить наиболее дружелюбную для принтера версию текущей таблицы.
  • «Тесты подробно» — отобразить подробную информацию о всех результатах прохождения тестов выбранными пользователями. Для корректного вывода информации загруженные в БД вопросы должны соответствовать тем, на которые тогда отвечали пользователи.

Просмотр списка вопросов в БД

Вы можете посмотреть постраничный список ВСЕХ вопросов, на данный момент загруженных в БД. Для этого перейдите по ссылке «нажмите СЮДА». На странице выводится $ElementsPerPage вопросов (см. #Конфигурирование системы). При выводе версии списка вопросов, предназначенной для печати — выведутся ВСЕ вопросы на одной странице — для удобства. Вывод списка вопросов из рабочей БД и вывод списка вопросов из одного из снимков, находящихся в архиве, принципиально эквивалентны (см. #Работа с архивом результатов).

Загрузка вопросов из текстового файла

Вы выбираете любой файл со своего компьютера (см. #Формат файла с вопросами); задаёте вариант вопросов загружаемого файла — или оставляете его равным 1 — значению по умолчанию; если хотите сначала стереть всё содержимое рабочей БД с вопросами — устанавливаете флажок «Перезаписать БД вопросов»; и нажимаете кнопку «Загрузить вопросы в БД». После этого вопросы будут загружены в БД, а вам будет показан результат операции загрузки вопросов (были ошибки или нет). Также система покажет детальную информацию обо всех этих ошибках.

Инициализация БД

Инициализация означает уничтожение и создание заново ВСЕЙ рабочей базы данных. Архивную базу данных эта команда не затрагивает. Инициализация архива производится отдельно, на странице работы с архивом. Таким образом, обычно работа с системой выглядит так: протестировать группу слушателей, отпустить их, архивировать результаты (см. #Работа с архивом результатов), инициализировать рабочую БД заново, повторить всё заново :)

Работа с архивом результатов

Чтобы попасть в архив, вы можете либо набрать http://www.vpntest.ru/admin/archive.php, либо нажать на ссылку «к архиву» вверху на странице администрирования системы. Точно так же из архива вы можете вернуться обратно к администрированию, нажав на ссылку «к администрированию» вверху на странице с архивом.

Архив устроен, как множество снимков рабочей базы данных. Каждый снимок включает в себя и информацию о пользователях, и их результатах, и вопросах тестов, которые они проходили, то есть по сути является просто копией рабочей БД, с которой можно работать абсолютно так же, как и с рабочей, за тем исключением, что пользователи, «сданные в архив», уже не могут проходить тесты, хотя вся информация о них и остаётся. Соответственно, команд «Дать +1 тест», «Отнять 1 тест», «Убрать тесты» здесь нету.

Инициализация

Если архив ещё не был инициализирован — выведется только одна команда, отвечающая за его инициализацию. Естественно, для работы с архивом вы должны его инициализировать.

Список снимков

Вы можете просматривать список снимков: выведите его, используя кнопку «Показать список снимков» и поля ввода выше неё (ограничения на снимки задаются по абсолютно тем же правилам, что и ограничения для вывода списка пользователей на странице администрирования, только вместо логина здесь используется имя снимка); список снимков выводится постранично. Кликая по кнопкам "<<" (переход к первой странице), "<" (переход к предыдущей странице), ">" (переход к следующей странице), и ">>" (переход к последней странице), вы осуществляете навигацию по страницам списка. На одной странице выводится $ElementsPerPage снимков (см. #Конфигурирование системы).

Просмотр снимка

Далее, выбирая снимок из списка, вы можете просматривать данные, сохранённые в этом снимке. Когда снимок уже выбран, над списком команд отобразится табличка с информацией о снимке (его именем и датой-временем снятия) в заголовке, командами для просмотра данных снимка в центре и командой удаления списка внизу. Удаление производится после подтверждения, выдаваемого при нажатии на ссылку «Удалить снимок».

Список пользователей

Кликнув по пункту «Список пользователей», вы выведете список ВСЕХ пользователей, сохранённых в снимке, в виде таблички, аналогичной табличке вывода информации о пользователей из рабочей базы данных. При клике по ссылке «…» в скобках рядом с пунктом «Список пользователей» выведется форма задания ограничений на поиск пользователей, аналогичная таковой на странице администрирования. Вся разница только в том, что здесь вы работаете со снимком, находящимся в архиве.

После показа списка пользователей вы точно так же, как и при администрировании, можете вывести версию для печати, или подробную информацию о всех результатах выбранных пользователей. Команды разрешения/запрещения прохождения тестов, естественно, запрещены, так как пользователи уже «сданы в архив», как было уже сказано выше.

Список вопросов

Кликнув по пункту «Список вопросов», вы выведете постраничный список всех вопросов, сохранённых в снимке, отсортированный по номеру варианта и номеру вопроса. На странице выводится $ElementsPerPage вопросов. Вопросы выводятся списком, под каждым вопросом выдаются его варианты ответа, правильный из которых отмечается более тёмным рыжим фоном. Постраничная навигация осуществляется так же, как и в списке снимков. При выборе «Версии для печати» списка вопросов — отобразятся сразу все вопросы на одной странице в удобном для печати / сохранения виде.

При клике по пункту «Скрыть списки» все выведенные списки будут скрыты.

Другими командами работы с инициализированным архивом будут: создание нового снимка и уничтожение архива.

Создание снимка

Чтобы создать новый снимок, вы должны вписать имя для нового снимка в поле «Имя снимка» и нажать либо Enter, либо кнопку «Сделать снимок». После отработки программы у вас появится новый снимок базы данных, являющийся практически точной её копией. Практически — потому что ID’ы пользователей при создании снимка не сохраняются во избежание дублированных индексов в таблице.

Уничтожение архива

Чтобы уничтожить архив, вам придётся сначала подтвердить свои действия в появляющемся на экране после клика на кнопке «Уничтожить архив» окне.