Учебное пособие: Этапы создания веб-приложения. Основы РНР и MySQL
35. free ( post _ data ); // не забываем освободить выделенную в строке 17 память
36. }
37.
38. return 0;
39.}
Браузер в результате получит примерно следующий код (если "засабмитить" на эту программу POST -форму из последнего примера):
<h1>Здравствуйте!</h1>
<p>Параметры POST-формы: name=Vasya&okbutton=OK (длина тела запроса: 22)
Что при этом отобразится на экране пользователя, думаю, понятно без комментариев.
Как видите, даже простейшая программа вывода параметров не очень проста. Более того, по стандарту HTTP почти все не алфавитно-цифровые символы (в т.ч. и русские буквы) передаются в UrlEncoded -виде (%XX , где XX - шестнадцатеричный код символа), и, если добавить в приведенную Си -программу код расшифровки UrlEncode , она уже не поместится на экран. А это - всего лишь базовые операции. А как вырастет программа на Си , если необходимо работать с базой данных?
Впрочем, написание CGI -программ на Си - довольно редкое извращение. Чаще всего это делают на Perl - языке, разработанном специально для обработки текстовых данных, а наличие модуля CGI делает написание CGI -скриптов намного более простой задачей. Здесь я не буду Вас знакомить с Perl , отмечу лишь, что проблем остается достаточно: все же Perl не предназначен для Web , это язык универсальный. Да и сама технология CGI несовершенна: при каждом обращении происходит запуск программы (в случае с Perl - интерпретатор языка), а эта операция довольно ресурсоемкая: для домашней странички Васи Пупкина производительности, конечно, достаточно, но серьезный портал с десятками и сотнями тысяч хитов в сутки потребует уже огромных аппаратных мощностей.
А теперь взглянем на веб-сервер Apache . По своей природе он модульный, и позволяет подключать расширения добавлением одной строки в конфигурационный файл. Было бы прекрасно, если бы существовал скриптовый язык, заточенный именно под Web , подключаемый модулем к Apache , не так ли? Это и есть PHP .
В принципе, PHP можно скомпилировать и как CGI -приложение, и использовать так же, как и Perl - но это для нестандартных web-серверов или особых извращенцев.
2. PHP: Препроцессор Гипертекста
В 1994-м году программист по имени Rasmus Lerdorf, намучавшись с классическим перловым модулем CGI , решил написать несколько Perl -скриптов, чтобы было попроще создавать свою домашнюю страницу. Такой движок был готов к началу 1995 года и назывался Personal Home Page Tools (PHP) . Умел он не очень много – понимал простейший язык и всего несколько макросов.
Через некоторое время понадобилось обрабатывать формы, поэтому Rasmus Lerdorf и для увеличения производительности все переписал на C. Так появился к середине 1995 года Personal Home Page/Forms Interpreter (PHP/FI) 2.0. Приставка FI – присоединилась из другого пакета Rasmusa , который умел обрабатывать формы (Form Interpritator) . PHP/FI компилировался внутрь Apache и использовал стандартный API Apache . PHP скрипты оказались быстрее аналогичных CGI – скриптов, так как серверу не было необходимости порождать новый процесс. Язык PHP по возможностям приблизился к Perl , самому популярному языку для написания CGI -программ. Была добавлена поддержка множества известных баз данных (например, MySQL и Oracle ). Интерфейс к GD – библиотеке, позволял генерировать картинки на лету.
Труды свои Rasmus Lerdorf, следуя принципам Open Source, выложил на всеобщее обозрение, и на некотором количестве сайтов PHP/FI вполне успешно использовался, хотя был довольно примитивен. С этого момента началось широкое распространение PHP/FI.
В 1997-м на PHP/FI, в поисках инструмента для удобного web – программирования, наткнулись два других программиста - Andi Gutmans и Zeev Suraski. Идея им понравилась, но функциональность и скорость работы PHP/FI оставляли желать лучшего. Zeev Suraski и Andi Gutmans решили переписать внутренний движок для исправления ошибки интерпретатора и повышения скорости выполнения скриптов. 6 июня 1998 года вышла новая версия, которая была названа PHP 3. Язык получился универсальный и мощный, и вскоре привлек внимание множества web- разработчиков: к концу 1998 года PHP3 использовался на ~10% web - серверов. К лету 1999 года PHP 3 был включен в несколько коммерческих продуктов. По данным NetCraft на ноябрь 1999 PHP использовался в более чем 1 млн. доменах.
Скромное название "Personal Home Page" уже не очень-то соответствовало реальности, и название было изменено на (в лучших Unix-традициях) рекурсивное: PHP: Hypertext Preprocessor .
"Движок" PHP 4, названный Zend Engine , разрабатывался усилиями уже сформировавшегося и с тех пор непрерывно разрастающегося PHP community , и в 2000-м году вышла 4-я версия PHP , ставшая менее чем через полгода стандартом для web - программирования под Unix (и не только): каждый уважающий себя хостер предоставлял поддержку PHP . Сейчас разработан PHP5 , основанный на новом Zend Engine 2...
2.1. Что такое PHP?
PHP – это скрипт-язык (scripting language) , встраиваемый в HTML - код, который интерпретируется и выполняется на web - сервере. Проще всего это показать на примере:
Листинг prim_1
<html>
<head>
<title>Вас приветствует PHP</title>
</head>
< body >
<? php
echo "Привет Виктор Сергеевич! Учи меня!";
?>