Программирование с нуля - это совсем просто! 90) Курс PHP
Школа программирования
90) Курс PHP
Сегодня тематика рассылки немного изменится. Наряду с созданием ролевой игры я решил также публиковать и уроки по языку PHP (веб-программирование). Письма по этому курсу приходят постоянно, поэтому курс PHP будет опубликован полностью в этой рассылке (в виде опенсорса :).
Постепенно :) Один выпуск - игра, другой выпуск - PHP.
Для создания программ на PHP необходимо некоторое знание языка Си, а также понимание сетевой архитектуры. Эта архитектура, впрочем, элементарна :)
Есть сервер (веб-сервер). Он установлен на компьютере, подключенном к Сети. На нем должен быть запущен стандартный системный софт для поддержке веб-серверов. IIS для Windows, Apache для Windows или *nix-ов. Под управлением этого веб-сервера развернут некоторый сайт.
На сервере также работает некоторая прикладная программа (веб-модуль, сценарий PHP), которая обрабатывает запросы к сайту, поступающие из браузеров разных ламеров :)
Вы часто встречаете такие адреса: пупкин.ру/denegnet.html - это запрос к веб-серверу, IP-адрес которого привязан системой DNS к имени пупкин.ру, на посылку ламеру :) странички denegnet.html и всех картинок в ней. Она сверстана (как правило, плохо :) неким веб-дизайнером в формате HTML и визуализируется уже его браузером на клиентском компьютере.
Но есть и такие адреса: пупкин.ру/denegnet.php . Это уже обращение к сценарию, написанному на языке PHP. Он ламеру :) не передается, а выполняется на веб-сервере. А ламеру отсылается РЕЗУЛЬТАТ работы этого сценария.
denegnet.php - это программа, набор операторов. Это важно! Разница между HTML-кодом и сценарием PHP ясна?
Каким будет результат работы сценария PHP? Он выдает текст в формате HTML, который уже и поступает, в браузер ламера :)
То есть файл denegnet.html сразу передается в клиентский браузер, а файл denegnet.php сначала работает на веб-сервере, потом формирует HTML-текст (например, точное содержимое файла denegnet.html), и лишь этот результат работы PHP-скрипта поступает клиенту.
Все.
Для создания PHP-программ достаточно обычного текстового редактора и выхода в Сеть. Находите бесплатный хостинг, который позволяет выполнять сценарии PHP, и начинаете экспериментировать :) Кроме того, разный тулз для локальной отладки и исполнения на компе без инета можно найти на сайтах http://www.php.net/ и других.
А теперь, собственно, сам урок первый.
Вступление
PHP активно применяется прежде всего для компенсации очевидных недостатков языка разметки HTML, который не позволяет выполнять какие-либо динамические манипуляции с контентом, а интерпретируется полностью в браузере, на стороне клиента. Существуют различные сценарные языки, расширяющие возможности HTML - например, JScript, которые, впрочем, также выполняются в браузере, а не на сервере.
Основная особенность PHP в том, что команды этого языка выполняются на веб-сервере, а клиенту-браузеру передается только результат его работы, HTML-код. Это важно отметить еще раз - результатом работы PHP-скрипта является HTML-код, текст странички или ее отдельных кусочков, который и передается браузеру. То есть если в PHP-коде имеется такая команда (условная)
передать_браузеру_код "<b>привет!</b>" ;
то после ее выполнения в браузер отправится не данный текст, а результат его работы, HTML-код:
<b>привет!</b>
Он будет интерпретирован браузером так:
привет!
Важная особенность PHP-сценария еще и в том, что конкретные команды пользователь на стороне браузера не видит и не может никак узнать. Он даже может и не подозревать, что код
<b>привет!</b>
на самом деле не был исходно в HTML-страничке, а сформировался с помощью PHP-сценария. Это позволяет делать многие вещи незаметно для пользователя, скрывая при этом алгоритмы работы.
PHP-сценарии чаще всего встраиваются внутрь заранее подготовленных HTML-страниц. Для этого принимается следующее условное обозначение:
<?php
...
?>
С строчки
<?php
начинается PHP-сценарий, строчкой
?>
заканчивается. В нашем примере с приветом полноценная HTML-страничка, соответственно, выглядела бы как-то так:
<html>
<body>
<h1>Пример запуска PHP-скрипта</h1>
<?php
передать_браузеру_код "<b>привет!</b>" ;
?>
</body>
</html>
Когда браузер запрашивает данную страничку, веб-сервер предварительно просматривает ее на наличие различных сценариев (в том числе и PHP - ведь в дополнение к PHP существуют и другие сценарные языки подобного назначения, например Perl или Python). В нашем случае он находит строчку
<?php
после чего последующий код не передает браузеру, а сначала отправляет на интерпретацию соответствующему исполнительному PHP-модулю, который выполняет команды PHP-сценария, а результат отдает обратно серверу. Тот компонует этот результат с оригинальным HTML-кодом странички и отправляет ее в браузер. В нашем случае итоговый результат - текст странички, который передается клиенту, выглядит так:
<html>
<body>
<h1>Пример запуска PHP-скрипта</h1>
<b>привет!</b>
</body>
</html>
Здесь
<b>привет!</b>
результат работы нашего PHP-сценария.
Только команды этого языка записываются, как принято во всех языках программирования, английскими словами. В частности, наша демонстрационная команда передать_браузеру_код в PHP выглядит как print. Как она записана, большими или маленькими буквами (или их комбинацией), значения не имеет. Но принято все команды PHP записывать маленькими буквами.
То есть наша первая полноценная PHP-программа выглядит так:
<html>
<body>
<h1>Пример запуска PHP-скрипта</h1>
<?php
print "<b>привет!</b>" ;
?>
</body>
</html>
Текст, который передается браузеру, заключается в кавычки с двух сторон. По окончании команды должен стоять символ ";" - точка с запятой.
Запустите вашу первую PHP-программу и убедитесь, что она работает.
Важно! Чтобы данная программа интерпретировалась сервером именно как PHP-сценарий, а не как обычная HTML-страничка, которая передается пославшему запрос браузеру без изменений, надо файлу с данным текстом дать расширение уже не .htm или .html, а .php. Только тогда сервер будет знать, что в нем имеются PHP-команды и их надо предварительно исполнить.
Задание. Попробуйте вывести с помощью PHP какой-либо более сложный HTML-код. Сделать это можно, например, с помощью нескольких идущих подряд команд print: