Создание тестовой системы и счетчика посещений страницы средствами CGI и PHP (Проверка знания словарного запаса), страница 2

Исходный код PHP-сценария для проверки правильности выполнения упражнения:

<html>

<head>

</head>

<body>

      <p align= right>Пользователь: <?php echo $_REQUEST["login"] ?></p>

      <?php

             $answers = fopen("../cgi-bin/answers.txt", "r");

             $cnt_err=0;

             $cnt_right=0;

             for($i=0; isset($_REQUEST['word'.$i]) && !feof($answers); $i++)

             {

                   $ans = fgets($answers);

                   $ans = trim($ans);

                   if ($ans != $_REQUEST['word'.$i])

                   {

                          $cnt_err++;

                          echo "Ошибка! Должно быть: $ans, Введено:".$_REQUEST['word'.$i]."<br>";

                   }

                   else

                   {

                          $cnt_right++;

                   }

             }

             if ($cnt_err !=0)

                   echo "<h1>Ошибки!</h1>";

else

echo "<h1>Все правильно!</h1>";

$stat = fopen("users/".$_REQUEST["login"].".txt", "a");

             fputs($stat, date("d.m.y H:i:s")."%".$cnt_right."\n");

             fclose($stat);

             $stat = fopen("users/".$_REQUEST["login"].".txt", "r");

             $tmp = array();

             for($i=0; !feof($stat); $i++)

             {

                   $tmp = fgets($stat);

                   if ($tmp == null)

                          break;

                    $m = explode("%", $tmp);

                    $results[$m[0]] = $m[1];

}

      //    print_r($results);

      // генерация диаграммы с помощью gd2

$img = ImageCreate(650,1800);

      $WhiteClr = ImageColorAllocate($img, 255,255,255);

      $BlackClr = ImageColorAllocate($img, 0, 0, 0);

      $BlueClr =  ImageColorAllocate($img, 0, 0, 255);

      $FiolerClr = ImageColorAllocate($img, 131, 9, 76);

      $i = 0;

      foreach($results as $date_x => $cnt_y ){

      $y0 = $i*20;

      ImageString($img, 5, 0, $y0, $date_x.' - '.$cnt_y[0], $BlackClr);

      $x0 = 250;

//    print_r($cnt_y);

      ImageFilledRectangle($img, $x0, $y0 + 5, $x0 + $cnt_y*30, $y0 + 15, $FiolerClr );

$i++;

      }

      // сохранение изображения на диске, чтобы можно было заюзать в теге

IMageJPEG($img, "users/".$_REQUEST["login"].".jpg");

      ImageDestroy($img)

      ?>

      <center>

      <H3><font color=BLUE>Диаграмма успешности прохождения теста</font></H3>

      <img src=<?php echo "users/".$_REQUEST["login"].".jpg" ?>>

      </center>

</body>

</html>

Пример результата выполнения реализованных сценариев и страниц представлен на следующем рисунке:

Выводы

В ходе выполнения третьей лабораторной работы мы приобрели навыки разработки Web-приложений с использованием двух наиболее распространенных технологий: CGI и PHP. Нам удалось на личном опыте убедиться в существенной разнице между уровнями сложности разработки этими двумя технологиями. Так, в частности, разбор строковых параметров, поступающих в скрипт из клиентской страницы, представлял отнюдь не тривиальную задачу на языке C даже с использованием библиотеки STL, в то время как в PHP-сценарии эта задача не возникала вовсе, а все переданные параметры могли быть легко получены из встроенных в язык структур данных. Таким образом, можно заключить – язык PHP является превосходным средством разработки нетривиальных Web-приложений, позволяющим максимально быстро и эффективно решать поставленные задачи, не отвлекаясь на тонкости взаимодействия с несетевыми компонентами приложения.