|
ства документов стандартна и весьма
универсальна (ее применют 99% сценариев, которые можно найти в Интерне-
те). Она еще и удобна для пользователя, потому что не создает "мертвых"
ссылок (любой URL сценария, который он наберет, пусть даже и без парамет-
ров, будет корректным). Однако программирование этой схемы на Си (и на не-
которых других языках) вызывает определенные проблемы. Язык PHP таких
проблем лишен.
Глава 3
CGI изнутри
До сих пор мы рассматривали лишь теоретические аспекты CGI. Мы знаем в общих
чертах, как и что передается пользователю сервером и наоборот. Однако как же
все-
таки должна быть устроена CGI-программа (CGI-сценарий), чтобы работать с этой
информацией? Откуда она ее вообще получает и куда должна выводить, чтобы пере-
слать текст пользователю?
И это только небольшая часть вопросов, которые пока остаются открытыми. В этой
главе я постараюсь вкратце описать, как же должны на самом деле быть устроены
внутри CGI-сценарии. На мой взгляд, каждый программист обязан хотя бы в общих
чертах знать, как работает то, что он использует — будь то операционная система
(ОС) или удобный язык-интерпретатор для написания CGI-сценариев (каким является
PHP). А значит, речь пойдет о программировании на Си. Я выбрал Си, т. к. это
одно
из самых лучших и лаконичных средств; кроме того, именно на Си чаще всего пишут
те сценарии, которым требуется максимально критичное быстродействие (базы дан-
ных, поисковые системы, системы почтовой рассылки с сотнями тысяч пользователей
и др.). В пользу этого языка говорит также и то, что его компиляторы можно
встре-
тить практически в любой сколько-нибудь серьезной ОС.
Тем не менее, вы не найдете в этой главе ни одной серьезной законченной
программы
на Си (за исключением разве что самой простой, типа "Hello, world!"). Несмотря
на
это, я попытаюсь описать практически все, что может понадобиться при программи-
ровании сценариев на Си (кроме работы с сокетами, — это тема для отдельной
книги,
да и, пожалуй, лишь косвенно примыкает к Web-программированию). По возможно-
сти я не буду привязываться к специфике конкретной ОС, ведь для CGI существует
стандарт, независимый от операционной системы, на которой будет выполняться
сце-
нарий. Вооружившись материалом этой главы, можно написать самые разнообразные
сценарии — от простых до самых сложных (правда, для последних потребуется также
недюжинная сноровка).
И все-таки, моя цель — набросать общими мазками, как неудобно (повторюсь —
именно неудобно!) программировать сценарии на языках, обычных для прикладного
программиста (в том числе на Си и Си++). Как только вы проникнетесь этой идеей,
мы плавно и не торопясь двинемся в мир PHP, где предусмотрены практически все
удобства, так необходимые серьезному языку программирования сценариев.
Если вы не знакомы с языком Си, не отчаивайтесь. Все примеры хорошо комменти-
рованы, а сложные участки не нуждаются в непременном понимании "с первого про-
Глава 3. CGI изнутри 43
чтения". Еще раз оговорюсь, что материал этой и следующей глав предназначен для
того, чтобы вы получили приблизительное представление о том, как же устроен
про-
токол HTTP и как программы взаимодействуют с его помощью. Думаю, что без этих
знаний невозможна никакая профессиональная работа на поприще Web-
программирования. Так что не особенно расстраивайтесь, если вы совсем не знаете
Си — ведь эта глава содержит гораздо больше, нежели просто описание набора Си-
функций. В ней представлен материал, являющийся связующим звеном между CGI и
HTML, детально описываются тэги форм и их наиболее полезные атрибуты, приемы
создания запросов и многое другое. Все это, безусловно, понадобится нам и при
про-
граммировании на PHP.
В то же время, изучая приведенные в этой главе примеры, вы можете и не
проверять
их на практике (особенно если у вас еще нет работающего Web-сервера), т. к. они
(как это ни парадоксально звучит) предназначены лишь для теоретических целей.
Сам не знаю, как это получилось, но, в конце концов, мне это нравится. Вам,
наде-
юсь, понравится тоже
|
|