Отправка результатов MyTestXPro методом POST на веб-сервер в Интернет: различия между версиями

Материал из MyTestXPro Wiki Help
Перейти к навигации Перейти к поиску
 
(не показано 46 промежуточных версий этого же участника)
Строка 1: Строка 1:
Если программа используется в компьютерном классе, то удобно [[Использование_журнала_тестирования_в_MyTestXPro|раздавать тесты и принимать результаты]] с помощью [[Журнал тестирования|модуля Журнал]]. Но может возникнуть необходимость получать результаты с удаленных компьютеров (самостоятельное выполнение тестов дома или дистанционное обучение). Модуль Журнал может работать не только в локальной сети, но и через сеть Интернет. Но возникают дополнительные сложности - например, как минимум, Ваш компьютер должен быть виден модулям тестирования через Интернет (т.е. иметь внешний "белый" IP)...
+
Если программа используется в компьютерном классе, то удобно [[Использование_журнала_тестирования_в_MyTestXPro|раздавать тесты и принимать результаты]] с помощью [[Журнал тестирования|модуля Журнал]]. Но может возникнуть необходимость получать результаты с удаленных компьютеров (самостоятельное выполнение тестов дома или дистанционное обучение). Модуль Журнал может работать не только в локальной сети, но и через сеть Интернет. Но возникают дополнительные сложности - например, как минимум, Ваш компьютер должен быть виден модулям тестирования через Интернет (т.е. иметь [https://www.kaspersky.ru/blog/public-ip-dangers/21676/ внешний] "белый" IP)...
  
 
В этом случае можно организовать отправку результатов по электронной почте или на web-сервер. Настроить отправку по электронной почте проще, но собирать результаты таким способом не очень удобно. Для отправки результатов на web-сервер надо повозиться чуть дольше, но результат стоит затраченных усилий.
 
В этом случае можно организовать отправку результатов по электронной почте или на web-сервер. Настроить отправку по электронной почте проще, но собирать результаты таким способом не очень удобно. Для отправки результатов на web-сервер надо повозиться чуть дольше, но результат стоит затраченных усилий.
Строка 5: Строка 5:
 
[[File:Result2web2.png]]
 
[[File:Result2web2.png]]
  
Итак, Вы решили собирать результаты тестирования таким способом. Рассмотрим как это можно организовать. Конечно, неплохо бы иметь некоторые знания по программированию и размещению сайтов в Интернет, но можно обойтись и без них и использовать готовые скрипты. Если у Вас возникнуть вопросы, то задать их можно в vk.com/MyTestXPro
+
Итак, Вы решили собирать результаты тестирования таким способом. Рассмотрим как это можно организовать. Конечно, неплохо бы иметь некоторые знания по веб-программированию и размещению сайтов в Интернет, но можно обойтись и без них и просто использовать готовые скрипты. Скрипты - это программки на языке программирования PHP, которые выполняются на веб-сервере и сохраняют или показывают результаты тестов.
 +
 
  
 
Алгоритм действий:
 
Алгоритм действий:
  
1) Зарегистрироваться на хостинге с поддержкой PHP. Это самый длительный этап.  
+
1) Зарегистрироваться на хостинге с поддержкой PHP (если уже есть, то использовать свой хостинг). Это самый длительный этап.  
  
 +
Для начала можно, например, на бесплатном https://ru.000webhost.com Хотя, если позволяют финансы, лучше использовать нормальный платный хостинг (например, [https://www.reg.ru/hosting/?rlink=reflink-5893159 reg.ru], есть варианты примерно от 100 руб. в месяц и пробный на 2 недели).
  
Для начала можно, например, на бесплатном https://ru.000webhost.com
+
2) Зайти в файловый менеджер на хостинге и закачать [https://yadi.sk/d/E_D8jXf5pycoNg zip-архив со скриптами] на сервер, например, в public_html (корневую папку для веб-страниц). Некоторые панели управления позволяют просто перетащить файл, в некоторых нужно нажать закачать и выбрать файл.
  
2) Закинуть архив со скриптами ab5ff96b-afc0-48e6-8157-39ee02df3ce9.zip на сервер в public_html (корневую папку для веб-страниц).
+
3) Распаковать этот архив в текущую папку. Для этого выбрать файл и нажать кнопку извлечь и указать куда.  
  
3) Распаковать этот архив в текущую папку (поставить путь "." (точку без кавычек)). Если в другую папку, то потом не забудьте поменять пути для результатов.
+
На 000webhost.com для распаковки в текущую папку надо поставить путь "." (точку без кавычек).  
  
4) Зайти в папку ab5ff96b-afc0-48e6-8157-39ee02df3ce9 и папке results поставить права неё запись (755).
+
Получили папку со скриптами, её можно переименовать так как хочется Вам. Исходный архив больше не нужен.  
  
5) В настройках POST программы тестирования указать адрес отправки http://ВАШСАЙТ/ab5ff96b-afc0-48e6-8157-39ee02df3ce9/save.php и галочку "отправлять результаты в web".
+
4) * Возможно, потребуется зайти в папку со скриптами и папке results задать права (755) с разрешением на запись. Скорее всего такие права уже заданы.
  
5) Проверить, что в параметрах теста стоит "отправлять результаты в web".
+
В принципе, все готово.
  
1. веб-сервер
+
5) Остается включить в параметрах теста в редакторе тестов пункт "отправлять результаты в web" и указать путь к скрипту сохранения результатов в параметрах модуля тестирования или автономного теста. Для этого на вкладке Email внизу поставьте галочку "Разрешить отправлять результаты в web" и в поле адрес укажите http://ВАШ-САЙТ/ПУТЬ/save.php
2. настроить
 
3. настроить программу
 
  
(или, если уже есть, использовать свой хостинг).
+
Теперь результаты тестирования будут отправляться на веб-сервер, где Вы можете посмотреть полученные данные и скачать файлы с результатами для импорта в Журнал тестирования.
  
Отправка результатов на веб-сервер требуется наличия веб-сервера, где можно организовать прием, все нужные права доступа и знания по программированию для веб, например на PHP.
 
  
Примеры скриптов для версии 11.0.0.60 доступны по ссылке https://yadi.sk/d/E_D8jXf5pycoNg.
+
<spoiler text="Развернуть шаг 1 на примере 000webhostapp.com">
 +
Почему этот хостинг? Да просто это первый попавшийся бесплатный хостинг с поддержкой PHP и с минимумом рекламы. Возможно, есть более удобные, присылайте свои варианты.
  
 +
a) Открываем сайт https://www.000webhost.com/
  
 +
b) Нажимаем "Начать", выбираем бесплатный тарифный план.
  
Логика приема и обработки результатов на веб-сервере может быть у каждого своя, в этом разделе приведем один из примеров от которого можно отталкиваться. В данном примере не будем использовать базы данных, а для простоты только файлы, вы же можете организовывать работу более сложным и гибким образом.
+
c) Вводим свою почту (желательно на gmail.com), придумываем пароль для хостинга (это не пароль от почты). Записываем пароль куда-нибудь. Нажимаем "Зарегистрироваться".
  
Но учитывайте, что ориентироваться только на текстовые поля не очень надежно, т.к. данные присылаются так же как и обычной веб-формой. Поэтому в важных случаях обращайте внимание на файл с защ. результатами, который тоже присылается.  
+
d) Переходим в почту, открываем письмо от хостинга и переходим по ссылке для подтверждения почтового ящика. Если с первого раза не подтверждается, то жмем отправить еще раз.
  
Для того чтобы модуль тестирования мог отправлять результаты на веб-сервер необходимо в параметрах теста разрешить данную операцию – Параметры теста → Сохранение и вывод результатов → Отправлять результаты в веб.
+
e) Переходим к вводу названия своего проекта. Ваш адрес будет https://ИмяПроекта.000webhostapp.com
  
Так же необходимо настроить модуль тестирования. В настройках нужно установить переключатель "Разрешить отправлять результаты в web" и указать адрес (URL) страницы, которой будут передаваться результаты. Так же можно задать параметры прокси-сервера (через правку файла настроек). В [[Настройка программы MyTestXPro|настройках]] модуля тестирования и настройках [[Автономные тесты MyTestXPro|автономного теста]] данные опции (в этой версии) находятся на вкладке с настройками отправки данных по эл. почте.
+
f) Все готово, можно загружать на сайт файлы.
  
И, естественно, у вас должен быть веб-сервер, где вы разместите страницу (скрипт) приема и обработки результатов.
+
<youtube>ry21eZkDaWE</youtube>
 
+
</spoiler>
Например, скрипт на PHP для приема и сохранения результатов может выглядеть так:
 
<pre>
 
<?php
 
  ## MyTestXPro http://mytestx.pro
 
  ## скрипт для приёма и сохранения результатов тестирования от модуля тестирования или автономного теста MyTestXPro методом POST
 
  ## в настройках программы MyTestXPro (точнее в модуле тестирования) в "настройки POST" адрес указываем типа
 
  ## http://ВАШ-САЙТ/7D70493E-1D0B-4DCA-9E23-BE0046879A4B/SaveResult.php?key=8F480FED-621A-41E1-8CB7-E6D4CC9DB76B
 
 
 
  # можно проверить ключ (произвольная переменная (метод GET) в адресе скрипта)
 
  //if ($_GET['key'] != '8F480FED-621A-41E1-8CB7-E6D4CC9DB76B') return;
 
 
 
  # проверка связи
 
  if(isset($_POST['Test']) and $_POST['Test'] == 'Test'){
 
    echo 'OK';
 
    return;
 
  }
 
  # проверка данных
 
  if(!isset($_POST['UId'])){
 
    echo 'Нет данных!';
 
    return;
 
  }
 
 
 
  # временная зона
 
  date_default_timezone_set('Europe/Moscow'); 
 
 
 
  # папка с результатами (не забудьте задать права доступа 766 к этой папке, чтобы можно было в нее записывать файлы)
 
  # можно задать как-то, например, $_SERVER['DOCUMENT_ROOT'].'/results/'
 
  $file_dir = $_SERVER['DOCUMENT_ROOT'].'/ab5ff96b-afc0-48e6-8157-39ee02df3ce9/results/';
 
  # текстовый файл с результатами (в папке с результатами)
 
  $file_name = $file_dir . 'data.txt';
 
  //$file_name_csv = $file_dir . 'data.csv';
 
  # папка для файлов результатов *.mtxpr
 
  $upload_path_files = $_SERVER['DOCUMENT_ROOT'].'/ab5ff96b-afc0-48e6-8157-39ee02df3ce9/results/';   
 
 
 
  # секретный ключ должен быть такой как в программе (задается в настройках ini-файла, для защиты необходимо указать/изменить)
 
  $SecretKey = '858374A9-EB92-4DAE-AF9C-C3D917C6E152';
 
  $md5SecretKey = md5($SecretKey);
 
 
 
 
 
  # получаем данные, отправленные методом POST 
 
  $Key0 = $_POST['Key0']; //случайная строка от программы для проверки Key1 и Key2
 
  $md5Key0 = md5($Key0); 
 
  $Key1 = $_POST['Key1']; //Key1 - проверка хеша файла теста = md5(md5(файла теста).md5(SecretKey).md5(Key0))
 
  $Key2 = $_POST['Key2']; //Key2 - проверка хеша UId теста = md5(md5(UId теста).md5(SecretKey).md5(Key0))
 
  $Key3 = $_POST['Key3']; //Key3 - проверка хеша = md5(UTF8(UID теста, имя, оценка, секрет, key0))
 
 
 
  # текст полей в кодировке UTF-8 
 
  $UId = $_POST['UId']; 
 
  $UserName = $_POST['UserName'];
 
  if ($UserName == '') return; 
 
  $UserGroup = $_POST['UserGroup']; 
 
  $Mark = $_POST['Mark'];
 
  $Result = $_POST['Result']; 
 
  $MaskOfResult = $_POST['MaskOfResult'];
 
 
 
  $ip = $_SERVER['REMOTE_ADDR'];
 
  $today = date("d.m.Y H:i:s"); 
 
 
 
  //$Version = $_POST['Version'];
 
 
 
  # строка с данными разделенными ";", можно открыть в электронных таблицах или разобрать как-то самому
 
  $CSV = $_POST['CSV']; 
 
 
 
  # для защиты нужно раскомментировать нужные строки
 
  //$_Key2 = md5(md5($UId).$md5SecretKey.$md5Key0); 
 
  //if ($Key2 != $_Key2) return; 
 
 
 
  //$_Key3 = md5($UId.$UserName.$Mark.$SecretKey.$Key0);
 
  //if ($_Key3 != $Key3) return; 
 
 
 
  # файл с результатами
 
  if(isset($_FILES['file']['name']) && !empty($_FILES['file']['name'])){
 
    # проверка, что нет ошибок при загрузке
 
    if($_FILES['file']['error'] != UPLOAD_ERR_OK) return;
 
 
 
    # проверка расширения файла результатов
 
    $upload_fn = explode(".", $_FILES['file']['name']);
 
    if(empty($upload_fn[1]) || ($upload_fn[1] != 'mtxpr')) return; 
 
   
 
    # загружаемый файл превысил допустимое значение ... байт
 
    if($_FILES['file']['size'] > 1000000) return;   
 
 
 
    # проверка что файл результатов начинается с MyTestXResult
 
    $handle = fopen($_FILES['file']['tmp_name'], "r");
 
    $contents = fread($handle, 13);
 
    fclose($handle); 
 
    if ($contents != 'MyTestXResult') return;
 
   
 
    # имя файла под которым сохраним результат
 
    $upload_file_name = time() . '_' . $_FILES['file']['name'];
 
    $upload_file_name = str_replace('/', '', $upload_file_name);
 
    $upload_file_name = str_replace('\\', '', $upload_file_name);
 
    $upload_new_file_name = $upload_path_files . $upload_file_name;
 
 
 
    # добавляем файл в каталог (сохраняем файл с результатами)
 
    if(!move_uploaded_file($_FILES['file']['tmp_name'], $upload_new_file_name)) $upload_new_file_name = ''; 
 
  }
 
  //$_Key1 =  md5(md5_file($upload_new_file_name).$md5SecretKey.$md5Key0);
 
  //if ($Key1 != $_Key1) return; 
 
 
 
  # теперь сохраним данные в текстовый файл (или можно сделать сохранение в БД)
 
 
 
  # имя файла результатов запишем с путем от корня сайта
 
  $upload_new_file_name = str_replace($_SERVER['DOCUMENT_ROOT'], '', $upload_new_file_name);
 
  $upload_size = $_FILES['file']['size'];
 
 
 
  $str = $today . "\t" . $ip . "\t" . $UserName . "\t" . $UserGroup . "\t" . $Mark . "\t" . $Result . "\t" . $MaskOfResult . "\t" . $upload_new_file_name . "\t" . $upload_size . "\t" . $CSV . "\r\n"; 
 
  # если файл должен быть в кодировке Windows-1251, то строки с iconv нужно убрать или закомментировать 
 
  //$str = iconv("UTF-8", "Windows-1251", $str);
 
 
 
  # пишем результаты в текстовый файл
 
  $fd = fopen($file_name, 'a') or die('error');
 
  flock($fd,2);
 
 
 
  fputs($fd,$str);
 
 
 
  flock($fd,3);
 
  fclose($fd); 
 
 
 
  # если все хорошо, отправим обратно ОК
 
  echo 'OK';
 
?>
 
</pre>
 
 
 
Данный скрипт сохранит результаты в текстовый файл и сохранит файл с (защищенными) результатами. Данные передаются методом POST, как обычной формой.
 
 
Пример скрипта, который отображает полученные результаты таблицей и дает скачать каждый отдельный результат:
 
  
<pre>
 
<?php
 
  ## MyTestXPro http://mytestx.pro
 
  ## скрипт показа результатов
 
  
  echo '<!DOCTYPE HTML>';
+
Шаги 2-5 на видеопримере (всего 3 минуты):
  echo '<html>';
 
  echo ' <head>';
 
  echo '  <title>Результаты</title>';
 
  echo '  <meta charset="UTF-8">';
 
  echo '  <link rel="stylesheet" type="text/css" href="style.css">';
 
  echo ' </head>';
 
  echo ' <body>';
 
 
 
 
 
  # папка с результатами
 
  $file_dir = $_SERVER['DOCUMENT_ROOT'].'/ab5ff96b-afc0-48e6-8157-39ee02df3ce9/results/';
 
  # текстовый файл с результатами (в папке с результатами)
 
  $file_name = $file_dir . 'data.txt';
 
 
 
  # открываем файл и формируем таблицу 
 
  $f = file($file_name);
 
  $table = '<table>';
 
  $table .= '<tr><th>№</th><th>Дата</th><th>IP</th><th>Имя</th><th>Группа</th><th>Оценка</th><th>Результат в % от макс. баллов</th><th>Маска результата</th><th>Файл результата</th><th>Размер файла</th><tr>'; //+<th>CSV</th>
 
  
  $count_res = count($f);
+
<youtube>K4lThxmZpww</youtube>
  for($i=0; $i<$count_res; $i++){
 
    //$line = iconv('utf-8', 'windows-1251', trim($f[$i])); 
 
    $line = trim($f[$i]);
 
    $r = explode("\t", $line);
 
    $count_col = count($r);
 
    $tr = '<td>'.strval($i+1).'</td>';
 
    for($j=0; $j<$count_col-1; $j++){
 
      if($j==$count_col-3) {
 
        $url = 'http://'.$_SERVER['HTTP_HOST'].$r[$j];
 
        $str = '<a href="'.$url.'">Скачать</a>';
 
      }else
 
        $str = $r[$j];
 
        $tr .= '<td>'.$str.'</td>';
 
      }
 
    $table .= '<tr>'.$tr.'</tr>';
 
  }
 
  $table .= '<table>';
 
  echo $table;
 
 
 
  echo ' </body>';
 
  echo '</html>'; 
 
?>
 
</pre>
 
  
Или еще один вариант:
+
upd: у 000webhost что-то сломалось с архиватором, поэтому сначала распакуйте архив у себя на компьютере, а затем загружайте (просто перетаскиванием) папку с файлами.
  
<pre>
+
Страница с результатами: https://mytestx2020.000webhostapp.com/mytest/show.php?page=1
<?php
 
  ## MyTestXPro http://mytestx.pro
 
  ## скрипт показа результатов 2
 
  
  echo '<!DOCTYPE HTML>';
+
<youtube>Y8GTQ-yFlp0</youtube>
  echo '<html>';
 
  echo ' <head>';
 
  echo '  <title>Результаты</title>';
 
  echo '  <meta charset="UTF-8">';
 
  echo '  <link rel="stylesheet" type="text/css" href="style.css">';
 
  echo '  <script src="sorttable.js" type="text/javascript"></script>';
 
  echo ' </head>';
 
  echo ' <body>';
 
 
 
  # данные в таблице
 
  $title = 'Today,IP,UserName,UserGroup,Mark,Result,MaskOfResult,FileName,FileSize';
 
  $a_title = explode(",", $title);   
 
 
 
  # заголовок для csv 
 
  $csv_title = 'Uid,Date,Time,UserName,UserGroup,Mark,Result,ScoreMax,ScoreMax2,Score,CountTask,CountAskTask,CountCheckTask,CountCorrectTask,CountPartiallyTask,CountErrorTask,CountMissTask,CountUsePrompt,CountUsePrompt2,CorrectByCount,TimeBegin,TimeEnd,Duration,TestTitle,TestFileName,CRCFile,TetUId,ModeEnd,ComputerNetName,IP,ComputerUserName,Note';
 
  $a_csv_title = explode(",", $csv_title);   
 
 
 
 
 
  # папка с результатами
 
  $file_dir = $_SERVER['DOCUMENT_ROOT'].'/ab5ff96b-afc0-48e6-8157-39ee02df3ce9/results/';
 
  # текстовый файл с результатами (в папке с результатами)
 
  $file_name = $file_dir . 'data.txt';
 
 
 
  # открываем файл и формируем таблицу 
 
  $f = file($file_name);
 
  $table = '<table>';
 
  $table .= '<thead><tr><th>№</th><th>Дата</th><th>IP/комп</th><th>Имя/Группа</th><th>Оценка</th><th>Результат</th><th>Файл результата</th><th>Тест</th><tr></thead><tbody>';
 
  
 +
Текущий пример скриптов позволяет просматривать результаты либо сразу все, либо постранично, либо с применением фильтров.
  
  $count_res = count($f);
 
  for($i=0; $i<$count_res; $i++){
 
    //$line = iconv('utf-8', 'windows-1251', trim($f[$i])); 
 
    $line = trim($f[$i]);
 
    $r = explode("\t", $line);
 
    $count_col = count($r);
 
    $csv_data = $r[$count_col-1];
 
    array_splice($r, $count_col-1);
 
  
    $a1 = array_combine($a_title, $r);
+
Включать в редакторе тестов пункт "отправлять результаты в web" нужно для каждого теста. Настроить модуль тестирования достаточно один раз и сохранить настройки (на видео не сохранял). Если настройки не сохраняются - запустите программу с правами администратора. Если Вы будете создавать автономный тест и перед этим уже настроили модуль тестирования, то настройки подтянутся автоматически.
    $a_csv = str_getcsv($csv_data, ';');   
 
    $a2 = array_combine($a_csv_title, $a_csv);
 
  
    $a1['Today'] = str_replace(' ', '<br>', $a1['Today']) . '<br> ~' . $a2['Duration'] . '~';
 
    $a1['UserName'] .= '<br>' . $a1['UserGroup'];     
 
    $a1['IP'] .= '<br>' . $a2['ComputerNetName'] . '<br>' . $a2['ComputerUserName'];
 
    $a1['Result'] .= '%' . '<br>' . $a2['Score'] . ' из '. $a2['ScoreMax'] . '<br>' . $a1['MaskOfResult'];
 
   
 
    $url2 = 'http://'.$_SERVER['HTTP_HOST'] . $a1['FileName'];
 
    $a1['FileName'] = '<a href="'.$url2.'">Скачать</a>';
 
    $a1['FileName'] .= '<br>' . $a1['FileSize'] . ' Байт' . '<br>' . $a2['ModeEnd'];
 
   
 
    $a1['Test'] = $a2['TestFileName'] . '<br>' . $a2['TestTitle'] . '<br>' .  $a2['CRCFile'];
 
   
 
    unset($a1['UserGroup']);
 
    unset($a1['MaskOfResult']);
 
    unset($a1['FileSize']);   
 
  
    $tr = '<td>'.strval($i+1).'</td>';
+
Хоть модуль тестирования может отправлять результаты в веб, обычно эта возможность используется для автономных тестов, которые можно раздать ученикам для выполнения самостоятельно дома (при этом устанавливать программу дома не требуется, только скачать и запустить автономный exe тест).  
    foreach ($a1 as $key => $value) {
 
      $tr .= '<td>'.$value.'</td>';
 
    }   
 
    $table .= '<tr>'.$tr.'</tr>';
 
  }
 
  $table .= '</tbody></table>';
 
  echo $table;
 
 
 
  echo ' </body>';
 
  echo '</html>'; 
 
?>
 
</pre>
 
  
 +
Для создания автономного теста в Редакторе тестов дайте команду Файл - Экспорт - Автономный тест... Если вы сохранили настройки для модуля тестирования, то они подтянутся при создании автономного теста и достаточно будет их только проверить, а не вводить заново.
  
Вот пример его работы:
 
  
[[File:post_show2.png|600px]]
+
Логика приема и обработки результатов на веб-сервере может быть у каждого своя, здесь приведен один из примеров от которого можно отталкиваться. В данном примере не используются базы данных, а для простоты только файлы, вы же можете организовывать работу более сложным и гибким образом.
  
  
[[Файл:Save 48.png|24px|мини|слева|link=https://yadi.sk/d/L6BSvAmdgfNqlA]]
+
Учитывайте, что ориентироваться только на текстовые поля не очень надежно, т.к. данные присылаются так же как и обычной веб-формой. Поэтому в важных случаях обращайте внимание на файл с результатами, который тоже присылается. Т.е. данные на веб-странице можно использовать для анализа текущей ситуации (кто выполнил, как выполнил), но, если результаты важны, то стоит скачать (можно сразу все показанные на странице) результаты, импортировать их в Журнал (Файл - Импорт и выбрать все).
Образец файлов можно скачать по ссылке https://yadi.sk/d/L6BSvAmdgfNqlA
 
В архиве папка. Поместите эту папку в корень вашего сайта. Возможно потребуется для вложенной папки для результатов задать права на запись.  
 
  
<spoiler text="Алгоритм действий:">
+
Для усиления защиты Вы можете измените в настройках программы значение SendPostSecretKey и задайте в файле save.php для $SecretKey такое же значение.
Самый простой вариант отправки результатов тестирования на свой сайт.
 
  
0) Зарегистрироваться на хостинге с поддержкой PHP, например, на бесплатном https://ru.000webhost.com (или, если уже есть, использовать свой хостинг).
 
  
1) Закинуть архив ab5ff96b-afc0-48e6-8157-39ee02df3ce9.zip на сервер в public_html (корневую папку для веб-страниц).
+
Если Вы используете отправку результатов в веб, то не стоит включать в результаты отчет по тесту, т.к. файл результатов может получить достаточно большой. При необходимости его можно сделать потом в Журнале. Если все-таки включаете, то увеличьте в файле сохранения результатов ограничение на максимальный размер файла.
  
2) Распаковать этот архив в текущую папку (поставить путь "." (точку без кавычек)). Если в другую папку, то потом не забудьте поменять пути для результатов.
 
  
3) Зайти в папку ab5ff96b-afc0-48e6-8157-39ee02df3ce9 и папке results поставить права неё запись (777).
+
💾 Скрипты для версии 11.0.0.60 доступны по ссылке https://yadi.sk/d/E_D8jXf5pycoNg
  
4) В настройках POST программы тестирования указать адрес отправки http://ВАШСАЙТ/ab5ff96b-afc0-48e6-8157-39ee02df3ce9/save.php и галочку "отправлять результаты в web".
+
В архиве save.php - для приема результатов, show.php - для просмотра (и даже некоторого анализа) полученных данных, show_begin.php - просмотр данных о начале тестирования (чтобы видеть кто сколько делает попыток), zip.php - используется в show.php для скачивания всех отображаемых результатов тестирования в виде одного архива (а не по одному файлу) + другие дополнительные файлы.
  
5) Проверить, что в параметрах теста стоит "отправлять результаты в web".
 
 
Файлы результатов будут складываться в папке results, просмотр таблицы результатов через в браузере по ссылке https://ВАШСАЙТ/ab5ff96b-afc0-48e6-8157-39ee02df3ce9/show2.php
 
</spoiler>
 
  
<youtube>n_bByzNL5Ug</youtube>
+
💾 Скрипты для версии 11.0.0.59 доступны по ссылке https://yadi.sk/d/L6BSvAmdgfNqlA (устарело)
<youtube>qhQu_Q1gxeY</youtube>
 

Текущая версия на 13:47, 24 октября 2020

Если программа используется в компьютерном классе, то удобно раздавать тесты и принимать результаты с помощью модуля Журнал. Но может возникнуть необходимость получать результаты с удаленных компьютеров (самостоятельное выполнение тестов дома или дистанционное обучение). Модуль Журнал может работать не только в локальной сети, но и через сеть Интернет. Но возникают дополнительные сложности - например, как минимум, Ваш компьютер должен быть виден модулям тестирования через Интернет (т.е. иметь внешний "белый" IP)...

В этом случае можно организовать отправку результатов по электронной почте или на web-сервер. Настроить отправку по электронной почте проще, но собирать результаты таким способом не очень удобно. Для отправки результатов на web-сервер надо повозиться чуть дольше, но результат стоит затраченных усилий.

Result2web2.png

Итак, Вы решили собирать результаты тестирования таким способом. Рассмотрим как это можно организовать. Конечно, неплохо бы иметь некоторые знания по веб-программированию и размещению сайтов в Интернет, но можно обойтись и без них и просто использовать готовые скрипты. Скрипты - это программки на языке программирования PHP, которые выполняются на веб-сервере и сохраняют или показывают результаты тестов.


Алгоритм действий:

1) Зарегистрироваться на хостинге с поддержкой PHP (если уже есть, то использовать свой хостинг). Это самый длительный этап.

Для начала можно, например, на бесплатном https://ru.000webhost.com Хотя, если позволяют финансы, лучше использовать нормальный платный хостинг (например, reg.ru, есть варианты примерно от 100 руб. в месяц и пробный на 2 недели).

2) Зайти в файловый менеджер на хостинге и закачать zip-архив со скриптами на сервер, например, в public_html (корневую папку для веб-страниц). Некоторые панели управления позволяют просто перетащить файл, в некоторых нужно нажать закачать и выбрать файл.

3) Распаковать этот архив в текущую папку. Для этого выбрать файл и нажать кнопку извлечь и указать куда.

На 000webhost.com для распаковки в текущую папку надо поставить путь "." (точку без кавычек).

Получили папку со скриптами, её можно переименовать так как хочется Вам. Исходный архив больше не нужен.

4) * Возможно, потребуется зайти в папку со скриптами и папке results задать права (755) с разрешением на запись. Скорее всего такие права уже заданы.

В принципе, все готово.

5) Остается включить в параметрах теста в редакторе тестов пункт "отправлять результаты в web" и указать путь к скрипту сохранения результатов в параметрах модуля тестирования или автономного теста. Для этого на вкладке Email внизу поставьте галочку "Разрешить отправлять результаты в web" и в поле адрес укажите http://ВАШ-САЙТ/ПУТЬ/save.php

Теперь результаты тестирования будут отправляться на веб-сервер, где Вы можете посмотреть полученные данные и скачать файлы с результатами для импорта в Журнал тестирования.


Развернуть шаг 1 на примере 000webhostapp.com


Шаги 2-5 на видеопримере (всего 3 минуты):

upd: у 000webhost что-то сломалось с архиватором, поэтому сначала распакуйте архив у себя на компьютере, а затем загружайте (просто перетаскиванием) папку с файлами.

Страница с результатами: https://mytestx2020.000webhostapp.com/mytest/show.php?page=1

Текущий пример скриптов позволяет просматривать результаты либо сразу все, либо постранично, либо с применением фильтров.


Включать в редакторе тестов пункт "отправлять результаты в web" нужно для каждого теста. Настроить модуль тестирования достаточно один раз и сохранить настройки (на видео не сохранял). Если настройки не сохраняются - запустите программу с правами администратора. Если Вы будете создавать автономный тест и перед этим уже настроили модуль тестирования, то настройки подтянутся автоматически.


Хоть модуль тестирования может отправлять результаты в веб, обычно эта возможность используется для автономных тестов, которые можно раздать ученикам для выполнения самостоятельно дома (при этом устанавливать программу дома не требуется, только скачать и запустить автономный exe тест).

Для создания автономного теста в Редакторе тестов дайте команду Файл - Экспорт - Автономный тест... Если вы сохранили настройки для модуля тестирования, то они подтянутся при создании автономного теста и достаточно будет их только проверить, а не вводить заново.


Логика приема и обработки результатов на веб-сервере может быть у каждого своя, здесь приведен один из примеров от которого можно отталкиваться. В данном примере не используются базы данных, а для простоты только файлы, вы же можете организовывать работу более сложным и гибким образом.


Учитывайте, что ориентироваться только на текстовые поля не очень надежно, т.к. данные присылаются так же как и обычной веб-формой. Поэтому в важных случаях обращайте внимание на файл с результатами, который тоже присылается. Т.е. данные на веб-странице можно использовать для анализа текущей ситуации (кто выполнил, как выполнил), но, если результаты важны, то стоит скачать (можно сразу все показанные на странице) результаты, импортировать их в Журнал (Файл - Импорт и выбрать все).

Для усиления защиты Вы можете измените в настройках программы значение SendPostSecretKey и задайте в файле save.php для $SecretKey такое же значение.


Если Вы используете отправку результатов в веб, то не стоит включать в результаты отчет по тесту, т.к. файл результатов может получить достаточно большой. При необходимости его можно сделать потом в Журнале. Если все-таки включаете, то увеличьте в файле сохранения результатов ограничение на максимальный размер файла.


💾 Скрипты для версии 11.0.0.60 доступны по ссылке https://yadi.sk/d/E_D8jXf5pycoNg

В архиве save.php - для приема результатов, show.php - для просмотра (и даже некоторого анализа) полученных данных, show_begin.php - просмотр данных о начале тестирования (чтобы видеть кто сколько делает попыток), zip.php - используется в show.php для скачивания всех отображаемых результатов тестирования в виде одного архива (а не по одному файлу) + другие дополнительные файлы.


💾 Скрипты для версии 11.0.0.59 доступны по ссылке https://yadi.sk/d/L6BSvAmdgfNqlA (устарело)