Так как в большинстве школ нет выделенного специалиста,
например, системного администратора, и все ложится на плечи школьного
учителя информатики. Вашему вниманию предлагается серия статей,
основная задача которых помочь учителю настроить коммуникационное
пространство в своей школе. Третья
статья посвящена PHP-технологии. В качестве примера приводится проект
по созданию интерактивного теста. Если у вас возникнут вопросы, то вы
можете задать их автору статьи на форуме.
Интернет - технологии в школеЧасть III. PHP – технология написания серверных приложений.Технология “клиент-сервер ”Сегодня
трудно себе представить современный бизнес, коллективную обработку
информации, учет хозяйственных операций на предприятии, причем в
реальном времени, без архитектуры «клиент-сервер», которую называют еще
трехзвенной – “клиент – серверное приложение - данные”. В
качестве примера рассмотрим экономическую программу 1С: Предприятие.
Естественно будет предположить, что для автоматизации учета движения
хозяйственных средств на предприятии N будет необходим центр управления
с централизованным хранением данных, попросту - сервер. Примечание.
Под сервером понимается компьютер, предоставляющий данные другим
пользователям, причем, на одном компьютере может быть установлено
несколько серверных программ, например, Web-сервер Apache, или сервер
баз данных MySQL, или почтовый сервер - CurierMail. Итак,
выделяется компьютер, на него устанавливают сетевую операционную
систему, например, для аутентификации пользователей, и разграничения
прав доступа к тем или иным данным. Далее, серверное приложение,
например, 1С: Предприятие и базу данных, например Microsoft SQL Server.
На рабочем же месте бухгалтера, устанавливают клиентскую часть
серверной программы, в нашем случае 1С: Предприятие. Главная задача
клиентской части обеспечить клиенту (бухгалтеру), интерфейс,
взаимодействующий с серверной программой. Удаленный бухгалтер, например
кассир, заходит с выделенными правами на серверную программу, и в
соответствии с правами выполняет свои операции, если это кассир, то
операции со счетами, если это кладовщик, то операции с материальными
ценностями и т.д. Так работают современные сетевые программы. Если
посмотреть обобщенно, то web-сервер выступает в роли центра управления,
который принимает запросы от пользователей, перенаправляет их базе
данных, в случае необходимости, или серверной программе (забегая
вперед, скажем, что в нашем случае, серверной программой выступает
обработчик PHP), обрабатывает их и возвращает клиенту. На стороне
клиента, в качестве клиентской программы выступает браузер. Такой
современный подход в управлении, обработке и передаче данных, в
современной школе, представляется, весьма своевременным. Итак,
в “Части II”, мы установили серверную программу PHP, в качестве модуля
сервера Apache, получается, что они “слились” воедино. Теперь нам
потребуется полноценный web-редактор, для обучения, написания,
тестирования серверных страниц. Web-редактор HTMLPadНа
сегодняшний день существует множество Web-редакторов, например,
Macromedia Dreamweaver 2004 MX, или Microsoft FrontPage. Это одни из
лучших программ, которые только есть на рынке web-редакторов. Однако,
во-первых: мы договорились использовать только лицензионное программное
обеспечение, в нашем случае, свободно-распространяемое; во-вторых: на
начальной стадии изучения основ Web-программирования, такие сложные
программы могут нанести только вред, поверьте на слово, учителю,
имеющему отрицательный опыт изучения сложных программ в начале
обучения, и, наконец, в третьих: даже если вы используете какой-то
другой редактор для создания web-страниц, забегая вперед, скажу, что
“наш” редактор приглянется многим web-программистам, и не только
потому, что в нем вы найдете многочисленные справочники по различным
web-языкам, библиотеки стандартных функций, но и сами сможете
конфигурировать меню, добавлять свои сценарии, отлаживать коды программ
не запуская браузер. Итак, программа называется HTMLPad Fisher Man v.1.9, загрузить которую можно по адресу: http://kimsite.wallst.ru/htmlpad/. Внешний вид программы: Осталось
настроить режим просмотра web-страниц, для этого найдите в папке, куда
вы установили программу, подпапку / superstructures/ и откройте
текстовый файл viewhttp. txt, удалите ненужное, и допишите место, где
будут храниться web-страницы и путь передаваемый браузеру. Например,
если мы редактируем файл F:/ web/ php/1. php, то мы должны сопоставить
ему имя виртуального хоста: http:// school12. ru/ php/1. php (сам файл
писать не нужно). Получим следующее: Далее,
зайдите в меню: Сервис – Параметры – Файлы – Просмотр, выберите
“Имитация работы сервера”, включите опции: “При просмотре во встроенном
в программу браузере” и “При просмотре во внешнем браузере”. Все. Пора
приступать к написанию серверных программ для нашего школьного
Web-сайта. В каталоге [ F:]/ web, где
хранятся web-страницы, создайте подкаталог / php/, именно сюда мы будем
помещать наши первые серверные web-страницы. Согласно рисунку, создайте
первый пример HTML-файла, содержащего код PHP: Привет, Мир!” ?>, сохраните в папке [ F:]/ web/
php/, с именем hello. php и запустите в “Режиме
редактирования/просмотра” - , или “Просмотр в браузере по умолчанию” - . Кстати, можно настроить и рабочие места учеников, предварительно выделить место на диске сервера и прописав в файле viewhttp. txt заменяемые пути, например: //server/web/php/ivanov/ | http://school12.ru/php/ivanov/ Описывать
язык программирования PHP, не входит в задачи статьи, к тому же в
программе встроен учебник, который можно найти в закладке: Справка –
Справочники – Учебник по PHP. Однако рассмотреть основные вопросы все
же стоит. PHPФрагменты
программного кода можно записывать непосредственно в код HTML Web
страниц, заключенный в парный тег , что мы и сделали в
первом примере. Оператор вывода echo выводит строковое значение в то
место страницы, где находится. Серверные страницы можно создавать и без
HTML макета, при условии, что мы зададим расширение *. php, иначе,
браузер проигнорирует и отобразит как обычную Web-страницу.
Поэкспериментируйте, создайте файл 1. php, поместите туда код Привет, Мир!” ?>, сохраните в папке [
F:]/ web/ php/1. php, запустите браузер и наберите в строке адреса :
http: // school12. ru/ php/1. php. Оператор вывода echo универсален, он
позволяет выполнять и математические действия над числами: сложение,
вычитание, умножение и деление. Например, такой сценарий выведет на страницу результат 5. После
объявления переменных, компьютер выделяет свободный участок памяти, для
хранения данных. В отличии от языка Паскаль, в PHP размер и тип
переменных явно не задается. Имена переменных состоят из символа $ и
латинских букв, знака подчеркивания и цифр, причем первая должна быть
буква, либо знак подчеркивания. Пример правильно написанных имен переменных: $x; $_in_romb = true; $str = “Apache + PHP”; $ y = $ x = 2; // особенность PHP, сначала переменной $ x присваивается значение 2, // затем $ y, получает значение $ x. $z = $x + $y; А это – неправильные имена: $2x; $in_circle big = false; $ответ Подумайте, почему? Из примеров видно, что переменным можно присвоить различные типы данных. - integer – целочисленный тип, в диапазоне от – 2147483648 до 2147483647;
- string – строковый тип, плюс специальные символы:
- \ n – перевод строки
- \r – возврат каретки
- \t – горизонтальная табуляция
- \\ - обратный слеш
- \ $ - знак доллара
- boolean - логический тип, может принимать только два значения: true (истина) и false (ложь);
- double – дробные числа с плавающей точкой, от 1.79769..*10 до -2.22507..*10 ;
- array – массив;
- object – тип объект.
Пример вывода текста с новой строки: echo “Первая”; echo “строка \ r \ n ”; echo “с новой строки”; ?> на экране получим: Первая строка С новой строки Арифметические операторы PHP. Оператор | Описание | - | Смена знака числа | + | Сложение | - | Вычитание | * | Умножение | / | Деление | % | Остаток от деления | ++ | Увеличение на единицу | -- | Уменьшение на единицу |
Пример смены знака числа: $ x = - $ x ; Пример увеличения числа на единицу (инкрементирование). $ m = ++ $ n ; // сначала увеличивает значение $ n на единицу, а затем присваивает $ m = $ n ++; //сначала присваивает, а затем увеличивает переменную $ m на единицу. Оператор объединения строк, позволяет соединить несколько строк в одну. Например : $str1 = “Web”; $str2 = “ сервер ”; $str3 = “Apache”; $out_str = str1 . “-” . str2 . “ “ . str 3; поместит в переменную $ out_ str строку Web-сервер Apache. Операторы сравнения. Оператор | Описание | < | Меньше | > | Больше | = = | Равно | <= | Меньше или равно | >= | Больше или равно | != или <> | Не равно | = = = | Строго равно | != = | Строго не равно |
Обычно при не строгом сравнении PHP пытается преобразовать типы. Операторы строго равенства и строго неравенства такого преобразования не делают. Логические операторы Оператор | Описание | ! | НЕ | && | И | || | ИЛИ |
$ log = !( 2 > 3 ); // переменная $ log примет значение true, так
как 2>3 – о ложь, а операция инверсии (НЕ), преобразует
(инвертирует) значение false в true. PHP может в самый неожиданный момент преобразовать типы данных. Поэтому рассмотрим пару примеров. $ x = 2; $ y = “1 поросенок”; $ str = $ x + $ y ; Строка, содержащая строку символов “1 поросенок”, будет преобразована в 1. Переменная $ str получит значение 3. Управляющие структуры. Выражение | Название | Пример | Описание | {} | Блоки | { $a = 2; $b = 3; $c = $a + $b; echo $c} | Блоки, как правило, не используют сами по себе, они входят в состав сложных выражений. | If (условие) {<блок, выполняющийся, если условие истинно> } else { <блок, выполняющийся, если условие ложно> } | Условное выражение | If ($x <=0) { $x = $x +1; $y = $y++; } else{ $x = $x -1; $y = $y--; } |
Условное выражение позволяет выполнить один из двух входящих в него
блоков в зависимости от выполнения или невыполнения условия | Switch ( <переменная или выражение> ) { case <значение 1> : < выражение 1 > break ; case <значение 2 > : <выражение 2 > break ; … default: < выражение > } | Выражение выбора. | Switch ($n) { case 1: echo “ Единица ”; break; case 2: echo “ Два ”; break; … default: echo “ Другое число ”; } |
Если значение переменной $ n соответствует значению секции case , то
выполнятся наборы выражений, которые относятся к данной секции. В
секциях case операторы не заключаются в блоки. Break прерывает выполнение выражения выбора. | For ( <инициализация> ; <условие>; <приращение> ) { <тело цикла> } | Цикл со счетчиком | For ($ i = 1 ; $ i <1 1 ;$ i ++) { $sum = $sum + $i; } | Цикл будет выполнен 10 раз и переменной $ sum будет присвоена сумма чисел от 1 до 10 | While ( < условие > ){ < тело цикла > } | Цикл с предусловием | $p=1; $n=0; While($n<=3) {$n=$n++; $p = $p*$n;} | Фрагмент программы вычислит факториал числа p ! (1*2*3*.. n ) | do <тело цикла> while ( <условие> ); | Цикл с постусловием | $s = 0; $i = 1; do { $r = $i; $i =++$i; } while ($i < 100); | Первая итерация цикла выполнится без проверки условия и, будет выполняться до тех пор, пока значение переменной $ i меньше 0. |
Синтаксис
PHP позаимствован с языка программирования – Cи. В отличие от языка
Паскаль, где четко разграничены области применения подпрограмм: на
функции (возвращающие один аргумент) и процедуры. Здесь мы имеем дело с
одной, но универсальной функцией. Пример функции принимающей два формальных параметра и возвращающая их разность: function divide($a, $b) { $c = $a - $b; return $c; } Пример функции без формального параметра: function err () { return echo “Ошибка в программе”; } Примеры описания массивов:
$ month = array [“январь”, “февраль”, “март”, “апрель”, “май”, “июнь”,
“июль”, “август”, “сентябрь”, “октябрь”, “ноябрь”, “декабрь”]; echo $ month [1]; // выведен месяц январь, нумерация элементов начинается с нуля! И последнее, в файле помощи программы, вы сможете познакомиться с языком PHP более подробно.
Итог:
мы рассмотрели принципы работы архитектуры “клиент-сервер”, установили
хороший инструмент: свободно-распространяемый web-редактор, освоили
основные управляющие конструкции языка PHP. Думается, что этого
достаточно для выполнения первого проектного задания, приведенного
ниже. Наш первый проект
Задача. Создать интерактивный тест. Необходимо. - Осуществить проверку знаний.
- Вопросы теста должны быть загружены на стороне клиента (ученика).
- Осуществить проверку ввода данных на стороне клиента.
- Результаты тестирования с аккумулировать в текстовый файл, учитывая отсутствие установленной сетевой базы данных (временно).
- Учителю иметь возможность получить в режиме on- line результат тестирования по отдельному ученику.
- Вывести общие результаты тестирования.
Модель решения. - Подготовить вопросы, закрепляющие знания пройденной темы.
- Разработать Web-интерфейс тестовой программы с помощью Web-редактора.
- Написать программу проверки корректности ввода данных на стороне клиента, инструмент – JavaScript.
- Передать данные с клиентской страницы на сервер (методом POST, или GET).
- В реальном времени передать результат тестирования N-го ученика на сервер, учителю.
- Сохранить общие данные тестирования в текстовый файл.
- Сгенерировать страницу общих результатов тестирования.
Требования. - Установленный Web-сервер Apache в компьютерном классе.
- Настроен обработчик PHP, в качестве модуля сервера.
- Установленный Е-мэйл сервер, например CurierMail.
- Web-редактор, например, HTMLPad.
Ход работы. - Создаем
интерфейс тестирования, с использованием форм 3 видов: формы передачи
параметров (в нашем случае – метод GET, т.е. в командной строке),
текстового поля, флажок и переключатель.
Пример 1. // функция проверки заполнения полей формы text //возвращает false, в случае найденного пустого значения function control(form) { for (var i=0; i < form.elements.length; i++){ if (form.elements[i].value == "") { alert('Заполните Ваши данные!');return false; } } return true; } Тест : PHP - технология написания
серверных страниц .
|
Должно получится, см. Рис. Сохраните
файл с именем 2. html в папку [ F:]/ web/ php. Для простоты мы
использовали 5 вопросов. Данные формы передаются методом GET. - Создадим программу обрабатывающую полученные данные на стороне сервера.
Пример 2. // функция построения результирующей страницы function html_out($str){ echo ""; echo ""; echo " "; echo $str . "\r\n"; echo " "; } //ответы $ar = array(1 => 2,2 => 1,3 => 3,4 => 8,5 => 1); //элементам массива $arr присваиваем значение value, //полей формы, переданных методом GET $arr [1] = $HTTP_GET_VARS['RadioGroup1']; $arr [2] = $HTTP_GET_VARS['RadioGroup2']; $arr [3] = $HTTP_GET_VARS['select1']; $arr [4] = $HTTP_GET_VARS['select2']; $arr [5] = $HTTP_GET_VARS['RadioGroup3']; $otv =0; $nam = $HTTP_GET_VARS['name'] . " " . $HTTP_GET_VARS['fam'] . " "; //собираем данные в переменную $str for ($i=1; $i<= count($arr); $i++) { $str = $str . (string)$arr[$i] . " "; if ((int)$ar[$i]==(int)$arr[$i]){$otv = $otv + 1;} else {$no=$no . " " .$i;} } $str =$nam . $str . "\r\n" . " Оценка : " . $otv . "\r\n" . "Неправильные ответы: " . $no . "\r\n"; html_out($str); //открыли файл 2.txt, для дозаписи данных (признак а+) $file = fopen("2.txt", "a+"); if(file) { fwrite ($file, $str); } else { echo(" Ошибка открытия файла ");} // отправляем результат тестирования учителю mail("admin@school12.ru", "Данные тестирования", "$str" ); //закрываем файл fclose($file); ?> Строки программы закомментированы, для самостоятельного изучения. Сохраните файл в той же папке, с именем 2. php. Откройте файл C:/ WINDOWS/ php. ini и поправьте две строчки: 2. 1. [ mail function ] ; For Win32 only. SMTP = school12.ru smtp_port = 23 2.2. ; For Win32 only. sendmail_from = admin@school12.ru В
первом блоке, мы задали доменное имя нашего сервера (по прошлым
занятиям). Во второй, указали адрес почты отправителя. Сохраните файл. 3. И, наконец, создадим файл, открывающий все данные тестирования – 2_ all. html/ < body > //открываем файл для чиения, признак r $file = fopen("2.txt", "r"); if(file) { // заносим данные файла в массив $ file _ array $ file _ array = file ("2. txt "); // выводим содержимое файла for($i=0; $i < count($file_array); $i++) { printf("%s ", $file_array[$i]); } } else { echo("Ошибка открытия файла");} //закрываем файл fclose($file); ?> Итог:
мы имеем в папке [ F:]/ web/ php/ три файла: 2. html – интерфейс ввода
данных тестирования; 2. php – серверная программа, отсылающая данные по
отдельному ученику на почтовый ящик учителя; и 2_ all. html – файл
вывода общих данных тестирования. Файл 2. txt будет создан при первом
запуске серверной программы, в случае необходимости его можно просто
удалить, или дописать функцию переноса данных, например, в архивный
файл. Хочется добавить, что работа в сетевом режиме, в
компьютерном классе, да даже и в школе, имеет много замечательных и
нераскрытых возможностей, как для проектной деятельности
старшеклассников, так и для автоматизации самих образовательных
процессов, к тому же, все программы имеют статус свободного
распространения, т.е. бесплатны. В следующей статье, мы установим
серверную базу данных – MySQL, и научимся выполнять простые манипуляции
с данными. p. s. по всем вопросам и замечаниям ждем Вас на страничке форума журнала “Вопросы Интернет Образования”: http://uchim.info/index.php?s=a01a9d17a590c4b30fcba59848e323b4&showtopic=66
|