Отправляет email-рассылки с помощью сервиса Sendsay

Создай сайт своими силами!

  Все выпуски  

Создай сайт своими силами!


ВВЕДЕНИЕ
Предметом изучения в данной книге является универсальный язык скриптов РНР. Материалы издания будут полезны не только новичкам. Мы с вами построим сайт, используя язык РНР. Самое главное - это понять прин­ципы программирования на РНР и использовать это для создания сайта любой сложности.
Данная книга имеет следующую структуру. В гл. 1 рассматривается об­щее представление и информация о РНР. В гл. 2 мы установим и сконфигу­рируем программное обеспечение на компьютер для программирования и тестирования созданных программ-сценариев на РНР. В гл. 3 мы в краткой форме рассмотрим язык разметки HTML для придания хотя бы минимально­го дизайна страницам сайта. Создадим главную страницу сайта. В гл. 4 мы приступим непосредственно к изучению основ РНР. Вообще изучать РНР мы будем практически s каждой главе и сразу же будем применять полученные знания на практике. Уже в четвертой главе мы создадим счетчик посещений для сайта. В гл. 5 построим страницу для новостей сайта. Вы научитесь от­правлять и обрабатывать данные из HTML форм. В гл. 6 создадим страничку сайта с подбором статей, позволим посетителям сайта оценивать этот сайт и оставлять на нем свои отзывы. В гл. 7 научимся создавать простую госте­вую книгу на сайте. В гл. 8 рассматривается работа с графическими изобра­жениями. Мы составим страницу для размещения на ней фотографий и дру­гих изображений. Дадим возможность посетителям вашего сайта закачивать на страницу свои фотографии или рисунки. В гл. 9 создадим простой интер­нет-магазин, где посетители могут выбрать себе товар и отправить бланк за­каза к вам на электронный адрес. В гл. 10 мы познакомимся с основами элек­тронной коммерции в Интернете. Вы узнаете, что такое электронные деньги, как создавать себе электронные кошельки и пополнять их деньгами. На прак­тике создадим себе несколько электронных кошельков. Создадим страничку для продажи электронных товаров, например, трЗ-файлов. В гл. 11 осущест­вим на практике продажу электронных товаров со своего сайта, используя сервис Web Merchant Interface или Roboxchange.
Все PHP-скрипты подробно разобраны и понятны даже новичку. Разъяс­нена практически каждая строчка программного кода. Главная цель книги -научиться писать PHP-скрипты и создавать собственные приложения, на­учиться создавать динамические РНР-страницы для своего сайта и, в конце концов, научиться зарабатывать, используя свои страницы сайта.
Глава 1. САИТОСТРОЕНИЕ И РНР
1.1. ЗНАКОМСТВО С РНР
Последние десять лет ознаменовались фантастическим развитием Интер­нета и новых способов общения между людьми. На переднем крае этого яв­ления находится World Wide Web (WWW). Ежедневно в этой новой комму­никационной среде открываются тысячи новых сайтов, а потребителям пред­лагаются новые виды услуг. Вместе с бурным развитием рынка появился огромный спрос на новые технологии и разработчиков, владеющих ими. Если вы читаете этот абзац, вероятно, вы уже являетесь или скоро станете web-разработчиком. Впрочем, какой бы ни была ваша профессия, вы выбрали эту книгу потому, что слышали о замечательной новой технологии - РНР. В этой главе вы познакомитесь с языком РНР, получите представление о его исто­рии и возможностях, а также основную информацию, необходимую для раз­работки сайтов с поддержкой РНР. Надеюсь, приведенные примеры пробудят ваш энтузиазм и наглядно покажут, какие перспективы РНР открывает перед вами и вашей организацией. В гл. 2 вы узнаете, как установить и настроить программное обеспечение РНР на компьютерах с Windows.
Что такое РНР? Если вы только начинаете знакомиться с РНР, то вам нужно знать определения. Итак, что же такое РНР? РНР - это широко ис­пользуемый язык сценариев общего назначения с открытым исходным ко­дом. Говоря проще, РНР - это язык программирования, специально разрабо­танный для написания web-приложений (сценариев), исполняющихся на web-сервере.
Аббревиатура РНР означает «Hypertext Preprocessor (Препроцессор Ги­пертекста)». РНР достаточно прост для изучения. Преимуществом РНР явля­ется предоставление web-разработчикам возможности быстрого создания ди­намически генерируемых web-страниц. Важным преимуществом языка РНР перед такими языками, как языки Perl и С заключается в возможности созда­ния HTML-документов с внедренными командами РНР. Значительным отли­чием РНР от какого-либо кода, выполняющегося на стороне клиента, напри­мер, JavaScript, является то, что PHP-скрипты выполняются на стороне сер­вера. Вы даже можете сконфигурировать свой сервер таким образом, чтобы HTML-файлы обрабатывались процессором РНР, так что клиенты даже не смогут узнать, получают ли они обычный HTML-файл или результат выпол­нения скрипта.
РНР позволяет создавать качественные web-приложения за очень корот­кие сроки, получая продукты, легко модифицируемые и поддерживаемые в будущем. РНР прост для освоения и вместе с тем способен удовлетворить запросы профессиональных программистов. Даже если вы впервые услыша-
Глава I. Сайтостроение и РНР
ли о РНР, изучить этот язык нс составит для вас большого труда. Я не сомне­ваюсь, что, изучив основы РНР в течение нескольких часов, вы уже сможете создавать простые PHP-скрипты. Язык РНР постоянно совершенствуется, и ему наверняка обеспечено долгое доминирование в области языков web-профаммирования, по крайней мерс, в ближайшее время.
Возможности РНР очень большие. Главным образом, область примене­ния РНР сфокусирована на написание скриптов, работающих на стороне сер­вера. Таким образом, РНР способен выполнять все то, что выполняет любая другая программа. Например, обрабатывать данные формы, генерировать ди­намические страницы. РНР способен выполнять и множество других задач.
Как работает РНР, где он выполняется? РНР выполняется, как я уже го­ворил, на сервере. Браузер посылает серверу запрос на страницу с РНР-кодом. Сервер отдает эту страницу на исполнение интерпретатору РНР, ин­терпретатор генерирует HTML-код, отдает серверу, а сервер посылает клиен­ту. Никакого PHP-кода в браузер не попадает. Это важно! Это значит, что увидеть исходный код PHP-скрипта невозможно! Единственный способ отправить что-то скрипту - это кликнуть по ссылке или нажать на кнопку в форме. Так, чтобы РНР обрабатывал какие-то действия пользователя в браузере - невозможно. РНР остался на сервере, ждать новых запросов сданными для обработки. РНР, но не скрипi! Скрипт, который выполнялся, отдавая пользователю страницу, завершил работу. Все данные, которые были в нем - пропали. Именно поэтому, если какая-то переменная нужна при по­следующих вызовах скрипта, ее надо этому скрипту передать снова.
1.2. КРАТКАЯ ИСТОРИЯ
История РНР начинается с 1995 г., когда независимый программист-контракт ник по имени Расмус Лердорф (Rasmus Lerdorf) написал сценарий Perl/CGI для подсчета количества посетителей сайта, прочитавших его он­лайновое резюме. Его сценарий решал две задачи: регистрацию данных посе­тителя и вывод количества посетителей на web-странице. Развитие WWW еще только начиналось, никаких специальных средств для решения этих за­дач нс было, и к автору хлынул поток сообщений с вопросами. Лердорф на­чал бесплатно раздавать свой инструментарий, названный Personal Home Page (РНР) или Hypertext Processor (гипертекстовый процессор). Шумный ус­пех инструментария РНР заставил Лердорфа приступить к разработке расши­рений РНР. Одно из расширений преобразовывало данные, введенные на форме HTML, в символические переменные, что позволяло экспортировать их в другие системы. Чтобы добиться поставленной цели, Лердорф решил в дальнейших разработках перейти с Perl на С. Расширение существующего инструментария РНР привело к появлению РНР 2.0, или PHP-FI (Personal Home Page - Form Interpretator). В усовершенствовании версии 2.0 принима-
ли участие программисты со всего мира. Новая версия РНР пользовалась ис­ключительной популярностью, и вскоре образовалась основная команда раз­работчиков. Они сохранили исходную концепцию внедрения программного кода прямо в HTML и переписали заново механизм лексического анализа, что привело к появлению РНР 3.0. К моменту выхода версии 3.0 в 1997 г. свыше 50 000 пользователей применяли РНР для улучшения своих web-стра­ниц. В 1997 г. было решено, что сокращение РНР должно означать не «Personal Home page», a «PHP Hypertext Processor».
В течение следующих двух лет стремительное развитие РНР продолжа­лось. В язык добавлялись сотни новых функций, а количество пользователей стремительно росло. В начале 1999 г. служба Netcraft (http://www.netcraft.com) сообщила о том, что, по минимальным оценкам, число пользователей РНР превысило 1 000 000, в результате чего РНР стал одним из самых популяр­ных сценарных языков в мире.
В начале 1999 г. было объявлено о предстоящем выходе РНР 4.0. Хотя одной из сильнейших сторон РНР была эффективность выполнения сценари­ев, при первоначальных разработках не предполагалось, что на базе РНР бу­дут строиться крупномасштабные приложения. По этой причине была начата работа над более устойчивым механизмом лексического анализа, больше из­вестным под названием Zend (http://www.zend.com). Работа шла быстро и за­вершилась 22 мая 2000 г. выпуском РНР версии 4.0. В настоящее время, все более популярной становится РНР версии 5.0. Программное обеспечение РНР установлено более чем в 4 млн доменов. Будущее РНР выглядит свет­лым, поскольку продукт продолжает активно использоваться как на крупных web-сайтах, так и на компьютерах отдельных пользователей.
РНР лучше всего охарактеризовать как работающий на стороне сервера встроенный язык сценариев Web, позволяющий разработчикам быстро и эф­фективно строить динамические web-приложения. С позиций грамматики и синтаксиса РНР напоминает язык программирования С, хотя разработчики не постеснялись включить в него средства из других языков, в том числе из Perl, Java и C++. Среди ценных заимствованных возможностей - поддерж­ка регулярных выражений, мощные средства работы с массивами, объектно-ориентированная методология и обширная поддержка работы с базами данных.
При написании приложений, выходящих за рамки традиционной, стати­ческой методологии разработки web-страниц (т. е. HTML), PHP также может послужить ценным инструментом для создания и управления динамическим содержанием, который используется наряду с JavaScript, стилями, WML (Wireless Markup Language) и другими полезными языками. Благодаря нали­чию сотен стандартных функций РНР в состоянии решить практически лю­бую задачу, которая может прийти в голову разработчику. В нем имеется обширная поддержка создания графики и операций с ней, математических вычислений, средств электронной коммерции и таких популярных техноло-
Глава 1. Сайтостроение и РНР
гий, как XML (Extensible Markup Language), ODBC (Open Database Connectivity) и Macromedia Shockwave. Широкий выбор возможностей избав­ляет от необходимости рутинной и непростой работы по подключению сторон­них модулей, поэтому многие разработчики со всего мира останавливают свой выбор на РНР.
Одним из главных достоинств РНР является тот факт, что он внедряется прямо в HTML-код, поэтому программисту не приходится писать программу с множеством команд для простого вывода HTML. Код HTML и РНР можно чередовать по мере необходимости. РНР позволяет написать фрагмент сле­дующего вида:
<html>
<title><?print "Hello world!"; ?></title>
</html>
Сообщение "Hello world!" выводится в заголовке web-страницы. Инте­ресно то, что команда print внутри конструкции, которая обычно называется экранирующими последовательностями РНР (<?...?>), представляет собой законченную программу. Ни длинного кода инициализации, ни включения библиотек - программа состоит лишь из того кода, который непосредственно решает поставленную задачу! Если на данный момент вы не понимаете при­веденный выше код, то поймете позже, дойдя до гл. 4.
Конечно, для выполнения сценариев РНР необходимо предварительно установить и настроить программное обеспечение РНР на сервере (или на вашем компьютере). Этот процесс описан в гл. 2. Но прежде чем браться за процесс установки, мы познакомимся с некоторыми характеристиками РНР. Этой теме посвящен следующий раздел данной главы.
1.3. ХАРАКТЕРИСТИКИ РНР
Как вы, вероятно, уже поняли, главным фактором при проектировании языка РНР является практичность. РНР должен предоставить программисту средства для быстрого и эффективного решения поставленных задач. Прак­тический характер РНР обусловлен пятью важными характеристиками:
∙   традиционностью;
∙   простотой;
∙   эффективностью;
∙   безопасностью;
∙   гибкостью.
Существует еще одна «характеристика», которая делает РНР особенно привлекательным: он распространяется бесплатно!
1.3.1.  Традиционность
Язык РНР кажется знакомым программистам, работающим в разных об­ластях. Многие конструкции языка позаимствованы из Си Perl, а нередко код РНР практически неотличим от того, что встречается в типичных программах С или Pascal. Это заметно снижает начальные усилия при изучении РНР.
1.3.2. Простота
Сценарий РНР может состоять из 10 000 строк или из одной строки - все зависит от специфики вашей задачи. Вам не придется подгружать библиоте­ки, указывать специальные параметры компиляции или что-нибудь в этом роде. Механизм РНР просто начинает выполнять код после первой экрани­рующей последовательности или тега <? и продолжает выполнение до того момента, когда он встретит парную экранирующую последовательность ?>. Если код имеет правильный синтаксис, он исполняется в точности так, как указал программист.
1.3.3.  Эффективность
Эффективность является исключительно важным фактором при про­граммировании для многопользовательских сред, к числу которых относится и WWW. В РНР 4.0 был реализован механизм выделения ресурсов и обеспе­чена улучшенная поддержка объектно-ориентированного программирования, а также средства управления сеансом. В последней версии появился и меха­низм подсчета ссылок (reference counting), предотвращающий выделение лишней памяти.
1.3.4.  Безопасность
РНР предоставляет в распоряжение разработчиков и администраторов гибкие и эффективные средства безопасности. В РНР реализованы механиз­мы безопасности, находящиеся под управлением администраторов. При пра­вильной настройке РНР это обеспечивает максимальную свободу действий и безопасность. РНР может работать в так называемом безопасном режиме (safe mode), который ограничивает возможности применения РНР пользова­телями по ряду важных показателей. Например, можно ограничить макси­мальное время выполнения и использование памяти (неконтролируемый рас­ход памяти отрицательно влияет на быстродействие сервера). Администратор также может устанавливать ограничения на каталоги, в которых пользователь может просматривать и исполнять сценарии РНР, а также использовать сце­нарии РНР для просмотра конфиденциальной информации на сервере.
В стандартный набор функций РНР входит ряд надежных механизмов шифрования. Исходный текст сценариев РНР, например, нельзя просмотреть в браузере, поскольку сценарий компилируется до его отправки по запросу пользователя. Реализация РНР на стороне сервера предотвращает похищение нетривиальных сценариев пользователями.
Глава 1. Сайтостроение и РНР
1.3.5. Гибкость
Поскольку РНР является встраиваемым (embedded) языком, он отличает­ся исключительной гибкостью по отношению к потребностям разработчика. Хотя РНР обычно рекомендуется использовать в сочетании с HTML, он с та­ким же успехом интегрируется и в JavaScript, WML, XML и другие языки. Кроме того, хорошо структурированные приложения РНР легко расширяют­ся по мере необходимости (впрочем, это относится ко всем основным языкам программирования).
Нет проблем и с зависимостью от браузеров, поскольку перед отправкой клиенту сценарии РНР полностью компилируются на стороне сервера. В сущности, сценарии РНР могут передаваться любым устройствам с браузе­рами, включая сотовые телефоны, электронные записные книжки, пейджеры и портативные компьютеры, не говоря уже о традиционных PC. Программи­сты, занимающиеся вспомогательными утилитами, могут запускать РНР в режиме командной строки.
Поскольку РНР не содержит кода, ориентированного на конкретный web-сервер, пользователи не ограничиваются определенными серверами (воз­можно, незнакомыми для них). Apache, Microsoft IIS, Netscape Enterprise Server, Stronghold и Zeus - PHP работает на всех перечисленных серверах. Поскольку эти серверы работают на разных платформах, РНР в целом явля­ется платформенно-независимым языком и существует на таких платформах, как UNIX, Solaris, FreeBSD и Windows 95/98/NT.
Наконец, средства РНР позволяют программисту работать с внешними компонентами, такими как Enterprise Java Beans или СОМ-объекты Win32. Благодаря этим новым возможностям РНР занимает достойное место среди современных технологий и обеспечивает масштабирование проектов до не­обходимых пределов.
1.3.6.  Бесплатное распространение
Стратегия Open Source наделала немало шуму в программной отрасли. Распространение исходных текстов программ в массах оказало несомненно благотворное влияние на многие проекты, в первую очередь - Linux, хотя и успех проекта Apache сильно подкрепил позиции сторонников Open Source. Сказанное относится и к истории создания РНР, поскольку поддержка поль­зователей со всего мира оказалась очень важным фактором в развитии проек­та РНР.
Принятие стратегии Open Source и бесплатное распространение исход­ных текстов РНР оказало неоценимую услугу пользователям. Вдобавок от­зывчивое сообщество пользователей РНР является своего рода «коллектив­ной службой поддержки», и в популярных электронных конференциях мож­но найти ответы даже на самые сложные вопросы. www.ipiq.ru

В избранное