Базовые сведения:
Основы Web-программирования
Для использования технологии CGI программа web-сервер должна удовлетворять определенным критериям - "поддерживать CGI". Если программа, запускаемая на web-сервере, представлена не двоичным кодом (т. е. скомпилированным файлом), а текстовым, то для ее выполнения требуется программа-интерпретатор того языка, на котором написана эта программа.
Такой интерпретатор включается в состав web-сервера и вызывается им при необходимости заняться выполнением программного кода. CGI-сценарий (CGI-скрипт) - программа (в текстовом виде), предназначенная для исполнения на web-сервере. Для создания CGI-скриптов можно использовать любой язык программирования -важно лишь, чтобы на том web-сервере, где предполагается эту программу запускать, имелся интерпретатор этого языка.
Препроцессор - программа, работающая совместно с web-сервером, которая просматривает все или некоторые файлы, выдаваемые web-сервером посетителям, и выполняет над ними определенные действия в зависимости от содержащихся в этих файлах инструкций. РНР является именно препроцессором, что, собственно, и видно из его названия.
Все языки программирования, используемые при разработке web-сайтов, можно разделить на две большие группы.
К первой относятся те из них, код которых выполняется на компьютере посетителя сайта, т. е. в браузере, запущенном на компьютере пользователя. Это известные всем JavaScript и VBScript. Программы на этих языках встраиваются в код web-страниц или выносятся в отдельный файл, обращение к которому осуществляется из web-страницы (в этом случае браузер все равно обрабатывает такие «вынесенные» программы таким же образом, как если бы они были встроены в код страницы).
Во вторую группу включаются те языки, программы на
которых выполняются на том компьютере, где расположен web-сервер.
Эта группа более обширна - дело в том, что в принципе на
web-сервере могут исполняться программы на любом языке, даже
командных .bat
-файлов MS-DOS, важно лишь, чтобы на нем была
установлена программа-интерпретатор этого языка, удовлетворяющая
стандарту CGI, которому также должен удовлетворять сам web-сервер.
РНР относится ко второй группе - программа на РНР исполняется на web-сервере. Однако от других CGI-языков РНР сильно отличается в лучшую сторону прежде всего своей простотой. При создании программы на РНР нет необходимости учитывать все те многочисленные мелочи, которые отравляют жизнь программистам на Perl или C++, - не надо заботиться о правах доступа к файлам сценария, не надо прописывать точные пути к различным модулям, нет необходимости следить за отсутствием в файле скрипта недопустимых символов.
Синтаксис языка РНР допускает его легкое освоение как начинающим программистом, так и тем, кто уже использовал ранее какой-либо язык программирования. Можно целиком и полностью сосредоточиться на решаемой задаче и не думать о мелочах. Именно это и делает РНР подходящим выбором для web-дизайнера, который, начав его использовать, может вообще забыть о каких-либо других CGI-языках. (Впрочем, если исходить из механизма действия, то РНР более правильно называть не "CGI-языком", а препроцессором - что, собственно, отражено даже в его названии.
В то время как CGI-приложение просто выдает некие данные в браузер посетителя, препроцессор просматривает все или некоторые файлы, выдаваемые web-сервером посетителю, и ищет в них определенные команды, которые и выполняет. Именно такой способ работы и позволяет указывать код программ на РНР непосредственно в тексте web-страниц.) Одним из наиболее заметных достоинств РНР является возможность без особых затруднений работать с серверами баз данных.
Возможности РНР можно весьма серьезно расширить с помощью дополнительных модулей, содержащих различные функции. Эти модули при необходимости размещаются на web-сервере, на котором установлен PHP-интерпретатор. Большое количество готовых модулей можно загрузить с адреса http://www.php.net, там же в разделе документации приведено и полное их описание.
Например, модуль Zlib позволяет работать из программы на РНР с архивами в формате Gzip, а модуль libswf - с Flash-презентациями, создавая и редактируя их прямо из программы на РНР.
История создания PHP
В отличие от многих других языков программирования, РНР был создан не какой-либо корпорацией или гением-программистом, а обычным пользователем, Расмусом Лердорфом, в далеком 1994 году. Цель разработки языка была проста - сделать домашнюю страничку Расмуса более интерактивной, а значит, и более привлекательной для посетителей. Расмус разработал базовый синтаксис и написал первый интерпретатор своего языка, получившего название Personal Home Page Tools - т. е. РНР. Этот интерпретатор мог обрабатывать лишь несколько основных команд, однако начало было положено.
В 1995 году Расмус доработал интерпретатор РНР, соединив его с другой своей программой, умевшей обрабатывать HTML-формы (именовавшейся FI - от "Form Interpretator"), а также сделал так, что интерпретатор, получивший название PHP/FI Version 2, мог становиться частью web-сервера. Это новшество позволило программам на РНР исполняться очень быстро. Кроме того, в том же 1995 году интерпретатор РНР был дополнен возможностями1 обработки новых команд, в частности, команд для работы с серверами баз данных и автоматического создания gif-файлов (последнее, к примеру, может быть использовано для генерации кнопок-счетчиков посещений). PHP/FI был размещен в Сети для всеобщего использования, и началось его повсеместное распространение.
К концу 1997 года РНР использовался более чем на пятидесяти тысячах сайтов. Web-мастера быстро оценили достоинства нового языка web-программирования, такие как легкость освоения и богатство возможностей, и вскоре традиционные Perl и С стали сдавать свои позиции.
Так как исходный код интерпретатора был открыт (а сам интерпретатор, понятно, бесплатен), то энтузиасты стали заниматься его доработкой, и летом 1998 года появился на свет РНРЗ - детище Зива Сураски и Энди Гутманса (Zeev Suraski and Andi Gutmans). РНРЗ был создан практически "с нуля", так как его авторы сочли код предыдущих версий недостаточно эффективным. Кроме того, РНРЗ стал весьма легко расширяемым продуктом. Любой, создавший на основе определенных стандартов модуль расширения РНР, позволяющий, скажем, работать с архивами какого-либо типа, мог этот модуль интегрировать с программными файлами РНР без каких-либо серьезных затрат времени и сил.
Уже к концу 1999 года число сайтов, построенных на основе РНР, перевалило за миллион. Весьма важным достоинством РНР также являлось то, что программы, позволявшие обрабатывать команды РНР, были созданы практически для всех операционных систем, от Windows до Unix и Linux.
В 2000-м году вышла разработанная компанией Zend Technologies четвертая версия интерпретатора РНР, дополненная множеством новых функций.
В настоящее время именно она является наиболее распространенной - РНР используется более чем на 20% сайтов Сети. Сейчас готова и проходит апробацию уже пятая версия данного языка.
Синтаксис PHP
Синтаксис PHP во многом заимствован из таких языков как C, Java и Perl. Файл, обрабатываемый сервером как правило имеет расширение php.
Поэтому, если вы знакомы хотя бы с одним из них - вам не составит особого труда просто сесть и начать писать программы на PHP.
PHP-код включаются в html-код в следующем виде:
<?PHP текст_кода ?> или <? текст_кода; ?>
PHP поддерживает комментарии 'C', 'C++' и оболочки Unix. Например:
<?php echo "This is a test"; // Это однострочный комментарий в стиле c++ /* Это многострочный комментарий, это ещё одна его строка */ echo "This is yet another test"; echo "One Final Test"; # Это комментарий в shell-стиле ?>
$city = "Tula";
city - переменная
Tula - значение
инкремента/декремента; ++$a Pre-increment Увеличивает $a на 1,затем возвращает $a. $a++ Post-increment Возвращает $a, затем увеличивает $a на 1. --$a Pre-decrement Уменьшает $a на 1, затем возвращает $a. $a-- Post-decrement Возвращает $a, затем уменьшает $a на 1. арифметические: $a + $b Сложение Сумма $a и $b. $a - $b Вычитание Разность $a и $b. $a * $b Умножение Произведение $a и $b. $a / $b Деление Частное от деления $a на $b. $a % $b Modulus Целочисленный остаток от деления $a на $b. строковые: Имеются две строковые операции. Первая - операция ('.'), которая возвращает объединение из правого и левого аргументов. Вторая - операция присвоения ('.='), которая присоединяет правый аргумент в левому аргументу. $a = "Hello "; $b = $a . "World!"; // теперь $b содержит "Hello World!" $a = "Hello "; $a .= "World!"; // теперь $a содержит "Hello World!"
PHP поддерживает
> (больше),
>= (больше или равно),
== (равно),
!= (не равно),
< (меньше) и <= (меньше или равно).
Эти выражения чаще всего используются внутри условных операторов, таких как if.
сравнения:
$a == $b равно TRUE, если $a равно $b. $a != $b не равно TRUE, если $a не равно $b. $a <> $b не равно TRUE, если $a не равно $b. $a < $b меньше TRUE, если $a строго меньше $b. $a > $b больше TRUE, если $a строго больше $b. $a <= $b меньше или равно TRUE, если $a меньше или равно $b. $a >= $b больше или равно TRUE, если $a больше или равно $b.
Оператор foreach может быть использован только в РНР версии 4.0 и выше.
Программа на РНР может прерываться кодом web-страницы - для этого достаточно вставить закрывающий тэг до этого кода и открывающий - после. Все, что находится между ними, будет выдаваться в браузер без какой-либо обработки, рассматриваясь как выводимое с помощью команды echo. Иными словами, код
<?php if ($a==l) { ?><р>Переменная а равна 1</p><?php> }?> эквивалентен коду <?php if ($a==l) {echo "<p> Переменная а равна 1</p>";}?>
Однако, первый вариант меньше нагружает процессор компьютера, на котором расположен интерпретатор РНР. Из сказанного также следует, что все программы на РНР, расположенные на одной web-странице, представляют собой одну большую программу, несмотря на то, что они разделяются блоками обычного текста страницы. Именно поэтому переменная, объявленная в расположенном в начале страницы коде, сохраняет свое значение не только до ее конца, но и во всех присоединяемых с помощью команды include файлах.
Пример
Задания на лабораторную работу