Пятница
29.03.2024, 17:52
Сайт информатиков
Приветствую Вас Гость | RSS
Главная Регистрация Вход
Меню сайта

Разделы новостей
Информатика [5]
Материалы по информатике
Тесты [2]
Интересное [12]
Все интересное

Наш опрос
Оцените мой сайт
Всего ответов: 46

Главная » 2008 » Март » 25 » Интернет - технологии в школе. PHP – технология написания серверных приложений
ГДЕ.РУ - развлекательная поисковая система
Интернет - технологии в школе. PHP – технология написания серверных приложений
11:53

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

Третья статья посвящена 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-го ученика на сервер, учителю.
  • Сохранить общие данные тестирования в текстовый файл.
  • Сгенерировать страницу общих результатов тестирования.

Требования.

  1. Установленный Web-сервер Apache в компьютерном классе.
  2. Настроен обработчик PHP, в качестве модуля сервера.
  3. Установленный Е-мэйл сервер, например CurierMail.
  4. Web-редактор, например, HTMLPad.

Ход работы.

  • Создаем интерфейс тестирования, с использованием форм 3 видов: формы передачи параметров (в нашем случае – метод GET, т.е. в командной строке), текстового поля, флажок и переключатель.

Пример 1.

Тест : PHP - технология написания серверных страниц .

Введите Ваше имя :

Введите фамилию :

1. Сколько раз выполнится данный цикл?

for ($i = 0; $i<=1; $i ++)

один раз

два раза

ни разу

2. Чему будет равно значение переменной $sum после выполнения цикла:

$sum = 0; $i = 1;

while ($i <= 2) {

$sum = $sum + $i;

$i = $i + 2;

}

0

1

2

3

4


3. Информация - это ..

4. Сколько будет 2+2*2?

5. Какое из приведенных выражений примет значение TRUE?

!(5 > 3) || (2 == 2)

(2*2<>4) && (3>0)

© Образование России

Должно получится, см. Рис.

Сохраните файл с именем 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


Категория: Информатика | Просмотров: 2645 | Добавил: informatika | Рейтинг: 0.0/0 |
Всего комментариев: 0
Имя *:
Email *:
Код *:
Форма входа

Календарь новостей
«  Март 2008  »
ПнВтСрЧтПтСбВс
     12
3456789
10111213141516
17181920212223
24252627282930
31

Поиск

Друзья сайта
Remote_NewsBlock loading...
Український софт - понад усе!
Добавить на сайт readme.ru

Статистика


Copyright MyCorp © 2024
Бесплатный конструктор сайтов - uCoz