Вы находитесь на странице: 1из 241

А. Кухарчик

PHP:

обучение на примерах

scanned and converted to PDFincluding Bookmarks

byHupBaH9I

МИНСК

ООО «НОВОЕ

ЗНАНИЕ»

200 4

УДК 004.92

ББК32.973.26-018.2

К96

 

А.

К96

РНР:

обучение на примерах/А . Кухарчик. — Мн.:

знание ,

2004. —

237

с.

ISBN

985-475-050-7.

Просто и доступно изложены основы РНР — популярного языка написания скриптов для Web-страниц. Выполняя несложные примеры, читатель сможет освоить азы программирования на РНР, создать динамическую страницу, счетчик посещения сайта, систему голосования, адресную книгу, интернет-магазин. Описаны типичные ошибки использования сценариев, а также пути их исправления. Книга содержит фрагменты кода, который можно применять при создании собственных проектов. Предназначена прежде всего для начинающих, но может быть полезна и опытным программистам, использующим РНР.

ISBN 985-475-050-7

004.92

32.973.26-018.2

© Кухарчик А,, 2004 © Оформление. ООО «Новое знание», 2004

Оглавление

Часть I Что такое интернет.

7

Часть II Готовимся ксозданию\Л/еЬ-страниц

14

Железо, железо и еще раз железо

 

15

Домашняя эргономика — безопасность прежде всего!

.

.

16

Программное обеспечение для Web-мастера

 

21

 

31

 

III

 

—PHP

36

История создания РНР .

 

.

.36

 

РНР.

 

39

 

41

Виртуальные хосты в Apache

 

42

Тестирование РНР.

 

.44

 

.

.44

 

:

50

 

51

 

РНР.

54

 

54

4

Оглавление

Работа с изображениями 54 Поддержка закачки файлов Поддержка
Работа с изображениями
54
Поддержка закачки файлов
Поддержка HTTP-cookie
54
55
Использование регулярных выражений
55
Обработка ошибок
.55
Управление электронными письмами
Вывод на экран и переменные в РНР.
56
56
Простейшие арифметические операции.
,
59
Простейшие логические операции.
.
.
.
.
.-.
.
62
Циклы
6 3
Время
и дата
68
Массивы
71
Работа со строками
'
74
Сессии
78
Часть
IV
Программировани е на РНР
80
 

80

.

.

.

83

88

89

91

94

96

99

103

104

Оглавление

 

107

баннеры, баннер ы

к файлу.

,

 
 

114

115

115

 

.

117

 

119

121

125

130

134

134

144

165

170

170

'

177

190

194

194

195

195

197

198

199

Приложения

Оглавление

205

Приложение 1. Что такое HTML и CSS

205

Приложение 2. Самые частые ошибки

206

Приложение 3. Некоторые функции РН Р

208

Приложение 4. Cookie.

233

Приложение 5. Методы передачи данных POST и GET

.

.

235

Приложение 6. Время Unix

236

Часть I

Что такое интернет

Интернет уже давно прочно вошел в нашу жизнь. Прошли те времена, когда многие пользователи персональных компьюте- ров в целях экономии дискового пространства удаляли програм- му Internet Explorer из всеми нами любимой операционной сис- темы, так как просто не нуждались в ней. Теперь даже те, у кого нет доступа к «Паутине», стараются не трогать эту программу, ведь форматы интернета давно уже перешли в другие сферы на- шей компьютерной жизни. Очень часто в формате HTML (см. приложение 1) выпускаются различные электронные книги (например, энциклопедии), журналы и т.д. И все это многооб- разие в обязательном порядке требует наличия на компьютере браузера — программы для просмотра HTML-документов. Яр- кий представитель этого класса — Internet Explorer, благода- ря стараниям корпораци и Microsoft давно уже вышедший в лидеры программ такого рода.

(что по нынешним

уж временам далеко не редкость, цены на модемы сильно снизи- лись), избежать программы-браузера

просто невозможно. Ведь хочется же хоть одним глазком посмотреть, а что же там, в боль- шом мире. И когда знакомство с интернетом состоялось, отка- заться от преимуществ Сети не так-то просто.

Через некоторое время бестолкового (или толкового) путешест- вия по интернету начинаешь осознавать, что надо как-то реали- зовать себя и обозначиться на бескрайних просторах Глобальной сети. Своя страница в интернете — это даже престижно, и пусть там мало полезного, а счетчик фиксирует только ваши не частые

А

если в компьютере

поселился модем

8

Что такое интернет

посещения, сделанное может стать началом серьезного проекта и изменить всю вашу жизнь.

Путешествуя по просторам интернета, вы, наверное, не раз обра- щали внимание на адреса страниц, которые порой достигают внешне очень больших размеров и просто приводят в недоумение наличием странных символов. И конечно, все имели дело с фор- мами, которые требовалось заполнить и получить что-то взамен (услуги, вещи и т.д.). Или видели постоянно изменяющиеся стра- ницы, на которых сначала одно, а через минуту — уже другое.

Но немногие задумываются над тем, как все это работает. Пред- лагаю вам окунуться ни свои плюсы идти

гом

в мир программирования. Этот мир во мно-

на что

не похож,

и минусы.

будет уже

но у него

есть

свои законы

и

правила,

После первого шага, сделанного в этом

мире,

Сегодня практически не осталось человека, который не слышал о специалисты узкого профиля, а пользователей можно было пере- считать буквально по пальцам. Но время идет вперед, и то, что еще вчера казалось дорогим и ненужным удовольствием, сегодня не только реальность, но и насущная необходимость.

бы об интернете. Еще с десяток лет назад

гораздо легче.

нем

знали только

Итак, что такое интернет? Это слово пришло к нам из англий- ского языка и является составляющим от слов «inter» и «net» (между и сеть). Понятно, что это слово должно обозначать какую-то связь между сетями, в которые объединены компьютеры в различных местах. Так оно и есть на самом деле. Интернет — это свободная международная сеть компьютеров, объединяю- щая в себе все страны и все континенты нашей планеты. Впе- чатляет? Да, действительно, работая в интернете, вы с легкостью перемещаетесь между компьютерами (виртуально, конечно), ко- торые могут быть расположены на огромных расстояниях друг от друга.

Физически интернет представляет собой сеть из волоконно-оп- тических или медных проводов, соединяющих удаленные друг от друга компьютеры или сети компьютеров, на которых размещена различная информация. Вместо проводов могут применяться

Что такое интернет

другие современные технологии: радио, лазерная или инфра- красная связь, GPRS и т.д. Впрочем, для нас это пока дело неда- лекого будущего. Компьютеры, обслуживающие интернет, тоже несколько необычные. Это не те «персоналки», которые мы привыкли видеть на работе или дома, а специальные серверы, которые умеют одновременно выполнять сразу несколько важ- ных функций, обеспечивая бесперебойную работу интернета круглосуточно. Для них пишут специальные программы и опера- ционные системы, производят надежное оборудование с повы- шенными требованиями, и управляют всем этим специалисты высокого уровня.

Точного дня рождения интернета никто не знает. Известно толь- ко, что первые разработки производились в 1969 году в США. Тогда эти исследования были строго засекречены и предназнача- лись в первую очередь для военных целей. Отпечаток тех далеких дней до сих пор лежит на структуре интернета — он работает практически независимо от конкретных серверов и магистраль- ных линий. Повреждение одного или нескольких каналов пере- дачи данных почти не сказывается на качестве связи, так как Сеть сама перестраивается и направляет информационные пото- ки по целым и наименее загруженным линиям. Основная идея интернета — отсутствие централизованного управления. Именно этот факт и привел к взрывному развитию Сети.

сеть,

доступная практически каждому желающему. По исследовани- 10 % населения нашей

ям на момент написания книги, почти

к Если развитие Сети пойдет такими же темпами, как в послед- нее десятилетие, то к 2005 году будет преодолен рубеж в 1 млрд пользователей.

Самая «интернетизированная» страна сегодня — это, как ни странно, Исландия. Доступ к Сети там имеет почти 70 % населе- ния страны. США занимают в этом списке только пятое место, уступив также Швеции, Дании и Гонконгу. Очень важную роль играет развитие телекоммуникационных услуг в стране и, конеч- но, уровень благосостояния населения. Ведь пользоваться услу-

планеты

интернету.

Сегодня интернет

это

глобальная

информационная

(около 580

млн человек)

имеют доступ

10

Что такое интернет

гами манных компьютеров, мобильных телефонов и т.д.

Наиболее распространенный и самый старый сервис, предос- тавляемый интернетом, — это электронная почта. Практически мгновенная доставка сообщения привлекает все больше и боль- ше поклонников своей простотой и доступностью. Кроме тек- ста, есть возможность передать любой файл, прикрепляя его к письму. Но сервисом, принесшим интернету его нынешнюю из- вестность, по праву считают WWW (World Wide Web, Всемирная паутина). Она была создана в 1992 году Тимом Бернерсом-Ли из Европейского центра ядерных исследований (CERN), располо- женного в Женеве (Швейцария). К октябрю 1993 года WWW на- считывала около 200 действующих Web-серверов, а уже к июню 1995 года — свыше 6,5 млн. В настоящее время существует более 36 млн Web-серверов, разбросанных по всему миру.

но и кар-

Сети

можно не только

при помощи настольных,

Всемирная паутина представляет собой систему связанных друг

с другом страниц, использующих так называемый гипертекст. Связь между страницами и связь одного места на странице

с другим осуществляют гиперссылки. При помощи простого щелчка мышью по гиперссылке, которая может быть не только

в виде текста, но и графического изображения, можно перейти

в любое место Сети. Специальный язык разметки гипертекста

называется HTML (HyperText Markup Language). Он позволяет разместить на странице текст, картинки, оформить простой текст (выделить курсивом, полужирным, изменить размер, тип или цвет шрифта и т.д.), а также сделать еще много других инте- ресных вещей. Подробнее про HTML читайте в приложении 1.

Каждый документ в интернете имеет свой уникальный URL (Uniform Resource Locator, унифицированный указатель ресур- сов). Он является ключом к поиску информации, находящейся

в Сети. Введя URL в адресную строку браузера, можно получить полную информацию, содержащуюся на удаленном компьютере, которому присвоен такой адрес.

Рассмотрим URL на примере:

Что такое интернет

1

1

Адрес читается слева направо. Первая его часть — http:/ / указывает тип сервера, В частности htt p : // указывает на протокол HTTP (см. ниже).

Вторая часть адреса — www.wnk.biz — доменное имя сервера. Домены — это зоны, на которые делится интернет и которые в свою очередь подразделяются по типу: домен com — обозначает коммерческие организации, edu — учебные и научные, gov — правительственные, mil — военные, net — сетевые, org — дру- гие организации. Кроме того, существуют домены, указывающие на страну, в которой расположен данный сервер. Например, by — Беларусь, га — Россия, иа — Украина, pi — Польша и т.д. Каждой стране присвоен свой уникальный домен. Это все домены первого уровня. Они подчиняются специальной международной организации, созданной для контроля и наблюдения за интерне- том. Именно там недавно было принято решение об открытии но- вых доменов, например: info — информационные ресурсы, biz — бизнес-ресурсы и т.д.

которым вы хотите воспользоваться.

— somedirector y

файлу,

к

Третья часть (каталог somedirectory) крыть.

Последним следует имя самого файла — index — и его расшире- ние — html.

На самом деле, все адреса в Сети, как, впрочем, и любая инфор- мация в компьютере, представлены в виде набора цифр. Каждый сервер имеет свой уникальный адрес, например 192.128.45.194. Это так называемый IP-адрес компьютера, и уже с ним ассоции- руются нормальные имена сайтов, которых на одном сервере с одним IP-адресом может быть очень много.

Сайт — это набор различных интернет-документов, объединен- ных под одним адресом. Сайты бывают самых различных тема- тик: поисковые, каталоги, информационные, личные странички, игровые и т.д. Очень многие сайты рекламируют друг друга и, та- ким образом, поднимают свою посещаемость. А высокая посе- щаемость — это залог привлекательности сайта для рекламодате- ля, а значит, возможность заработать.

— указывает

который

вы

путь

на

собираетесь

сервере

от-

12

Что такое интернет

Вот так устроен интернет. Это только малая часть его возможно- стей, но зато наиболее часто используемая.

Зачем нужен интернет? Интернет может служить универсаль- ным средством для многих слоев населения планеты. Именно поэтому он и приобрел такую огромную популярность. Во-пер- вых, это огромное количество информации. Настолько огромное, что существуют специальные сайты — каталоги и поисковики, которые регулярно автоматически просматривают доступные участки Сети и педантично регистрируют содержимое докумен- тов в своих базах данных. Во-вторых, это универсальное средст- во общения. Всевозможные чаты, электронная почта, телекон- ференции — чего только не придумано для того, чтобы упро- стить процесс контакта друг с другом. Интернет вдруг сделал весь мир очень маленьким и легкодоступным. Не представляет никаких трудностей одновременно общаться с друзьями из со- вершенно разных стран и континентов. И все это в реальном времени. В-третьих, интернет представляет собой четвертое сред- ство массовой информации (после газет, радио и телевидения). Пользоваться интернетом в этом качестве гораздо удобнее и эф- фективнее, чем всем остальным, вместе взятым. Кроме того, ус- тойчивость сети к катаклизмам часто играет просто неоценимую роль в развитии событий. Самый свежий пример — пожар на Останкинской телебашне в Москве в 2000 году. Тогда прекрати- ли работу теле- и радиосистемы, но интернет продолжал ис- правно функционировать, и люди могли продолжать получать информацию о развитии событий. Наконец — бизнес. В интер- нете можно не только получить информацию, но и, например, купить что-то в интернет-магазине или поучаствовать в интер- нет-аукционе. А если вы хороший специалист, вам не составит труда найти высокооплачиваемую работу.

Не сомневаюсь, каждый найдет для себя что-то в интернете, на- столько он многообразен и универсален.

Как пользоваться интернетом у себя дома? Чтобы ходить в ин- тернет, нужен компьютер. Достаточно слабого, подойдет даже старенький 486, но учитывайте то, что современные страницы уже давно не ограничиваются только текстом. Они полны графи-

Что такое интернет

1 3

ки и активного содержимого, что определяет некоторые требова- ния к ресурсам компьютера. И конечно, современные браузе- ры — это объемные и многофункциональные программы, кото- рые также требовательны к системам, на которых они работают. Но в любом случае слабенького Pentuim вполне достаточно, а новые компьютеры даже более чем избыточны.

Кроме компьютера нужен модем. Это специальное устройство, преобразующее цифровую информацию (понятную компьютеру) в модулированный аналоговый сигнал (который может быть пере- дан по телефонным линиям), и наоборот, воспринимающее такой сигнал и осуществляющее обратное преобразование. Само собой, наличие телефонной линии обязательно. Модемы бывают самые

разные: недорогие и очень дорогие, внутренние и внешние, с до- полнительными возможностями и без них. Для дома будет вполне достаточно недорогого внутреннего модема. Он устанавливается

в системный блок компьютера, не требует отдельного питания,

прост в настройке и не занимает места на рабочем столе. Стои- мость такого устройства крайне мала, по сравнению со стоимо- стью компьютера, и приобретать его надо. Компьютер без модема сегодня — это то же самое, что телевизор без антенны.

Если модем есть, нужно настроить соединение с провайдером. Провайдер — это организация, предоставляющая услуги по под- ключению к компьютерным сетям, в частности к интернету. Су- ществует такая услуга, как беспарольный доступ к интернету.

Суть ее в том, что не надо заключать договор с провайдером, нет абонентской платы, а счет приходит вместе со счетом за телефон и включает в себя поминутную оплату времени, проведенного

в интернете за прошедший месяц. Такой подход очень удобен,

так как позволяет подключиться с любого компьютера без за- ключения договора и работать тогда, когда это необходимо.

Приглашаю и вас приобщиться к интернету и внести в его разви- как кажет-

тие свой посильный вклад. ся

Это совсем не так сложно,

на первый взгляд.

Часть II

Готовимся к созданию Web-страниц

Самое главное в этом деле, как и в любом другом, — решиться. Далеко не так просто, как кажется на первый взгляд, принять ре- шение и начать делать все с нуля, на собственном опыте узнавая все «прелести» сайтостроительства. А тем более такого сложного, как, например, интернет-магазин.

Вы сейчас держите или нет, нужно мне это программирование или просто воспользоваться го- товыми решениями? У меня, к сожалению, такого выбора просто не было. Я вынужден был заняться программированием просто потому, что так было надо для меня и для моей работы. Хотя, если посмотреть с другой стороны, это было даже к лучшему, иначе я просто не смог бы получить тот огромный (это мне так кажется) опыт разработки не только собственного интернет-магазина, чата, форума и т.д., но и многих других сервисов.

Честно говоря, я вам даже немного завидую.

в руках эту книгу и, может быть, даже думаете,

читать ее

реше- ния, но я приведу довод, который перевешивает все остальные. В собственноручно сделанном проекте вы сможете быть хозяи- ном и не зависеть от каких бы то ни было разработчиков. Хочу, тут баннер поставлю, хочу, здесь форму для подписки на новости размещу. И это уже не говоря о том, что так выйдет не только на- много дешевле, но и перспективней! В процессе создания своих программ (пусть сначала небольших) закладывается база для сле- дующих, еще более серьезных проектов.

Можно долго взвешивать

все за и против выбора готового

Есть, правда,

большой

и минусы,

— время.

них

как и

в любом

время

серьезном деле.

и

еще

раз

Самый

Это

из

Время,

время.

Железо, железо и ещераз железо

15

часы, дни и ночи, убитые перед монитором в бесчисленных экс- периментах. Так что подумайте еще раз перед тем, как мы нач- что я решения, и вам просто придется многое додумывать и изобре- по мостоятельно. Иначе было бы неинтересно, правда?

са-

нем. Тем

практически готовые

более

не всегда

буду давать

а идти

тать. Я стараюсь показать путь,

нему придется уже

Итак — вперед

Железо, железо и еще разжелезо

Как ни жаль, но без компьютера, желательно не

Почему именно в могу написать ни строчки кода. Все ходят, что-то спрашивают, мо-

куда-то

мент!

Объясняю.

него»,

своего,

«домаш-

домашнего?

просто

не

нам

просто

Когда

я

обойтись.

прихожу

надо

на работу

офис, то

зовут,

всем все

именно в такой

ответственный

Совсем другое дело — дома. уже давно в садике (школе, университете, еще не вернулись

с дискотеки и т.д.), сел себе спокойненько за компьютер

Не спеша встал, позавтракал, дети

— и ра- всему неплохо

К этому

не отвлекаясь!

бы иметь хорошую жену, чтобы приготовила завтрак, отправила де- тей в школу и отвечала на телефонные звонки. Но тут я не совет- чик, ищите выход сами.

Теперь, собственно, «железо», т.е. аппаратное обеспечение ком- пьютера. Не ждите, что я буду уговаривать вас использовать для работы самую современную технику. Да, это приятно, когда все работает и работает быстро. Но, взглянув правде в глаза, надо при- знать, что вполне достаточно правильно настроенного Pentium-I Windows 98. Что такое «правильно настроенного»? Поясню, на своем примере. У меня довольно мощный по сегодняшним мер- кам компьютер, но он пока один, и кроме меня его используют жена и не по годам смышленый старший сын. Да и младшая дочь уже ручонки протягивает. И мне надо как-то защищаться от этого безобразия, так как нет-нет да и поломают мои доброжелательные домочадцы что-то в системе.

бота пошла,

ни на что

16

Web-страниц

Готовимся к созданию

или восстанавливать все заново, что мне про- или ограничивать их права. в Pentium-I не обойдешься. Ему не вынести установленной у меня

Я значаю права администратора, сыну и жене — пользователя (эту умную мысль я ном опыте постиг истину). Вот уже больше года все в порядке. я

Windows XP с файловой системой NTFS.

Вот и приходится

сто лень делать,

так

как

это долго,

Именно это я и делаю, и вам советую.

Правда,

делаю

так:

себе

на-

прочитал где-то уже

после того, как на собствен-

когда

больше

все равно

ее

трогать

Если не считать плановых замен винчестера, то

переустанавливать

предпочитаю просто нет причин.

систему,

Но это в идеале. Если так «разогнаться» нет возможности, уста- навливаем Windows 98 на компьютер, на котором она будет рабо- тать. Неплохо бы иметь побольше памяти, чтобы быстрее все ра- ботало, и винчестер немаленький, и привод CD-RW для резерви- рования своих трудов, и модем получше, и монитор побольше. Неплохие запросы, да? Собственно, без всего этого можно обой- тись. Любое современное оборудование вполне подходит.

Очень полезно иметь какое-то эффективное средство для резер- вирования и переноса данных. У меня эти задачи разделены ме- жду приводом CD-RW и flash-накопителем. Удобно записывать большие объемы на CD, а маленькие (например, свою работу синхронизировать дома и в офисе) — при помощи USB flash-на- копителя. Только мой вам совет: не забывайте правильно завер- шать работу с flash-накопителем.

Домашняя эргономика — безопасность прежде всего!

Занимаясь компьютерами уже больше десяти лет (начиная с 1988 года, если не считать программируемые калькуляторы, на которьж не один раз совершил посадку на Луну и другие планеты Солнечной системы, кто-то еще помнит, что это значит?), я по- стоянно задаюсь вопросом, как максимально защитить себя от их пагубного влияния на здоровье? Ведь не секрет, что если ра-

Домашняя эргономика безопасность прежде всего!

17

ботать на компьютере достаточно долго и ежедневно, это влия- ние почувствуется очень скоро и достаточно сильно.

Самый ответственный момент во всей эргономике, на мой взгляд, — это глаза. Их нужно беречь больше всего, так как они страдают в первую очередь. Еще в бытность самодельного «Спек- трума» (популярный компьютер 1980-х годов) приходилось са- диться подальше от телевизора и делать периодические переры- вы в работе, прогуливаясь мя казался верхом совершенства эргономики, да и слова-то такого никто не знал. Уже давно бытовые телевизоры не приме - няются в качестве мониторов, но защита человеческого глаза от излучения электронно-лучевой трубки ушла не так уж и далеко. Конечно, я знаю о защитных покрытиях на кинескопах, о соот- ветствии строгим требованиям мировых стандартов, о защитных фильтрах. Но на самом деле все несколько сложнее. Например, вы не задумывались, куда должно уходить вредное излучение? Ведь оно никуда не исчезает, просто специальные защитные сис- темы отводят его лают, нам никогда не узнать, пока нет этого самого заземления. Так что и говорить о соответствии монитора мировым стандар- там и эффективности защитного экранного фильтра можно только в том случае, если заземление подключено, причем пра- вильно. А у вас оно есть? У меня, например, нет.

на свежем воздухе. Монитор в то вре-

на заземление. Плохо или хорошо они это де-

ответ будет отрицательный. Это неудиви- тельно: кому нужна забота о человеке?

Вот и строили, и строят до сих пор дома без третьего провода в розетке, а значит, и без воз- можности заземления.

не Возможность заземления все же есть, просто для этого при- дется приложить некоторые усилия, знания и способности.

Самый простой (но неверный) способ — подключить компьютер к батарее центрального отопления. Действительно, трубы и бата- реи в любом случае хорошо заземлены, но все равно риск полу- чить 220 В на корпусе компьютера остается, так как никто не даст гарантии, что не произойдет случайное замыкание на бата- рею бытового прибора. Да и если на корпусе вашего компьютера

ся.

позаботит-

И

вас,

у

скорее всего,

Если не позаботиться

о себе

самому,

никто

о тебе

18

Готовимся к созданию Web-страниц

появится напряжение, его может почувствовать сосед, который Так что

цах,

на свою беду решит принять душ. и

палка эта

о двух кон-

оба могут больно ударить.

Если у вас есть встроенный ТВ-тюнер, вам повезло. Оплетка те- левизионного кабеля заземлена, и кое-какую защиту вы получите, но не стоит на нее особо рассчитывать. Оплетка имеет сопротив- ление более 70 Ом, а в любом учебнике электротехники сказано, что заземление должно подключаться специальными кабелями

В качестве кабеля для заземле- ния хорошо (хоть и не идеально) подойдет медный витой жгут. Он гибкий, легко прокладывается по помещению, его можно ку- пить на рынке. А вот куда его подключить — другой вопрос, причем

Со стороны компьютера все более-менее ясно. Как правило, на корпусе (если он достаточно хороший) есть специальный разъем для подключения заземления. Если нет — прикрутите (только очень крепко) жгут к любой металлической части корпуса ком- пьютера. Предварительно, конечно, хорошо зачистите жгут и корпус. Этим вы обеспечите надежное заземление всех уст- ройств — и принтера, и модема, и монитора. А вот с другой сто- роны придется подключаться к распределительному щитку. Если это подъезд жилого дома, нужно будет вызывать электрика, так как щитки, как правило, закрыты на замок. Если щиток открыт, подавите в себе желание прикрутить жгут к нулевому проводу (большой винт с гайкой, к которому сходятся много неизолиро- ванных проводов). Он, конечно, заземлен, но за такое само- управство можно получить штраф. А правильно — просверлить отверстие в металлической части распределительного щитка и с помощью винта крепко прикрутить жгут заземления к нему, не забыв все хорошенько зачистить. Вот такое решение и будет безопасным.

с сопротивлением не более 4 Ом.

самый важный в этом деле.

Если вы живете в частном доме, заземление можно сделать само- му. Достаточно закопать неглубоко во влажную землю лист ме- талла, и подключить жгут к нему. Можно для этих целей вос- пользоваться железными конструкциями, погруженными в землю. а ние» сыграет с вами злую шутку во время очередной грозы.

Только не перепутайте

их с громоотводом,

то

такое

«заземле-

Домашняя эргономика безопасность прежде всего!

1_9_

Впрочем, не огорчайтесь, если установить заземление нет ника- кой возможности. Если вас мучают головные боли от работы за компьютером и болят до рези глаза, вам стоит попробовать спе- циальные очки. В них используются фирменные линзы, имею- щие патент, гарантии и соответствующие сертификаты. Линзы снимают часть (будем реалистами) вредного излучения от мони- торов, телевизоров, яркого солнца и т.д. На практике это дейст- вительно приносит пользу (проверено). Уж не знаю, что там эти линзы снимают на самом деле, но голова и глаза при их приме- нении уже не болят. Найти линз ы (и заказать очки) можно в спе- циализированных коммерческих отделах, торгующих оптикой. По словам продавцов, линзы пользуются популярностью и могут быть подобраны индивидуально под любое зрение. Только один совет: если уж покупаете, покупайте в легкой (и соответственно дорогой) оправе. А то голова будет болеть уже не от монитора, а от очков :-) Сами линзы не дорогие — за пару около двух евро, так что попробовать стоит.

Кроме внешних средств защиты от излучения мониторов, при- он рый, не соответствует требованиям мировых стандартов, то ни Советую вам сменить такой монитор. Если вы на это решились, обратите вни- мание на дорогие и фирменные модели. На мой взгляд, — лучше хороший 17-дюймовый монитор, чем плохой или посредственный 19-дюймовый. Исходите из собственных финансовых возможно- стей, но знайте одно: выбранный монитор должен обеспечивать на порядок выше рекомендованной. Рекомендованной считается частота 85 Гц , н о оптимальны й вариан т — 100 Гц . Таки м образом , есл и вы предпочитаете работать с разрешением экрана 1024 х 768, ваш

монито р долже н обеспечиват ь работ у пр и 100 Гц и более . Н о н е

работу при вашем любимом разрешении с частотой

о какой эффективной защите не может быть и речи.

стальное внимание стоит обратить на сам аппарат.

ста-

Если

менее 100 Гц! С другой стороны , в

и рошего от такого аппарата ждать не приходится — либо сведе- ние, либо четкость, либо яркость страдают. А чаще все вместе. Да и нежелательно эксплуатировать монитор при предельно допус- указываются

будет работать в режиме, близком к критическому,

случае более 100 Гц монито р хо-

ничего

тимых частотах. предельные параметры.

А в характеристиках

именно эти,

20

Готовимся к созданию Web-страниц

Самым лучшим решением будут мониторы на основе жидких кристаллов. Если не говорить об играх, профессиональной гра- фике, дизайне, и цене — это идеальный выбор. Правда, цены уже начали снижаться, но пока еще находятся на достаточно вы- соком уровне. Мониторы на ЖКИ не имеют вредных для глаз излучений, не подвержены мерцанию, их видимая площадь эк- рана больше мониторов аналогичной диагонали на лучевой трубке. Множество преимуществ говорит само за себя. Однако прежде чем покупать монитор, обязательно попросите подклю- чить его к компьютеру и показать, как он работает. Я видел мо- дели, на которые без слез смотреть больно в прямом и перенос- ном смысле: то изображение дрожит, то резкость, яркость

узкий. Очень многое зависит от матрицы, от качества кабеля и, конеч- но, от сигнала, который выдает видеокарта. Идеально — под- ключение по цифровому каналу, без преобразования в аналого- вый и обратно, но такие мониторы пока редкость. Будем наде- яться, что положение исправится.

и контрастность

«хромают», то угол зрения предельно

С точки зрения эргономики важно также рассмотреть устройст-

ва ввода, т.е. клавиатуру и мышь. Клавиатуру желательно иметь с подставкой, «ломаную» и т.д., кому что придется по душе. Я, например, использую самодельный вариант — обычную де- шевую клавиатуру с небольшим дополнением, которое неслож- но изготовить самостоятельно. Достаточно сшить (хорошо бы ) в полтора раза длиннее клавиатуры и по ширине примерно рав- ный ей, набить его плотным материалом (можно поролоном)

и зашить. Толщину можно подобрать экспериментально, в пре-

поручить это жене, сестре, матери

мешочек из мягкой ткани

делах 5—10 мм. Руки будут лежать на этом мягком приспособле- нии перед клавиатурой, и значительно меньше уставать как при

печати, так и при использовании мыши. Мышь в таком случае тоже можно любую, только желательно с колесом прокрутки, которое очень сильно снижает ее дневной пробег и позволяет меньше напрягаться держащей ее руке. Мой выбор — оптиче- ские «грызуны». Но не их дешевые аналоги, с которыми мучать- ся при работе приходится еще больше, чем с грязной шариковой мышкой. В сторону радиомышек даже не смотрите — не пода-

Программное обеспечение для Web-мастера

21

рок. Самое главное их преимущество — отсутствие провода, но недостатков очень много. Самый большой — наличие батареек или аккумуляторов (в первом случае их надо периодически ме- нять, во втором — заряжать, и то, и другое — не сахар).

Еще один важный момент — воздух. Действительно, качество воздуха в помещении очень сильно влияет на самочувствие че- ловека. При работе компьютера (как и вообще любого электри-

ческого прибора) воздух не только нагревается, но и обогащает- ся положительными ионами и насыщается озоном, поэтому возьмите себе за правило работать только при открытой форточ- ке. Идеальный вариант — приобрести ионизатор воздуха. Если вы считаете это несколько дорогим решением, можно восполь- зоваться бытовым вентилятором. Если поставить его около фор- точки и направить на рабочее место, он неплохо справится с удалением вредного для здоровья воздуха. Очень хорошо

в этом случае подходят офисные вентиляторы на высокой ножке. Они имеют многопозиционный переключатель скорости враще- ния лопастей и вращающийся вентилятор в защитном кожухе.

И, конечно же, нельзя забывать о правильной осанке, перерывах

работе и горячем питании вносит свою лепту (именно горячем, а не
работе
и
горячем
питании
вносит свою лепту
(именно горячем, а не
в качество работы
ценится выше
бутерброд-
ном).
Все это
и
в
хорошее
самочувствие.
А
это
в наше
время
всего.

Программное обеспечение для Web-мастера

Один из основных инструментов Web-мастера — программа- браузер. Они, как и любое программное обеспечение, бывают разные. Я использую Internet Explorer. Это браузер, который по умолчанию встроен в самую популярную среди пользователей операционную систему. Несомненно, такая интеграция сыграла свою роль в том факте, что на сегодняшний день доля этого брау- зера составляет более 90 %. И это при том, что есть такие пре- красные программы-браузеры, как, например, Netscape Navigator или Opera.

Конечно, каждый выбирает для себя то, что считает лучшим.

22

Готовимся к созданию Web-страниц

Есть и обратная сторона медали. Очень часто разработкой про- екта занимается не команда специалистов, в которой каждый от- вечает за свою часть работы, а один человек. Недостатки такого подхода очевидны, однако ничего не поделать. И тут уж прихо- дится быть мастером на все руки — заниматься и дизайном, и программированием, и многим другим. А значит, вам приго- дятся на компьютере все популярные нынче в мире програм- мы-браузеры. Ведь очень часто хорошо выглядевшая страница в одном браузере совершенно не смотрится в другом. Идеала до- биться сложно, но какой-то компромисс всегда можно найти. Впрочем, это на ваш выбор. Если вы используете в работе Internet Explorer, то большинство посетителей увидят ваше твор- чество так, как вы и задумывали. Оптимально, если вы на стра- нице будете подписывать, что она оптимизирована для опреде- ленной версии определенного браузера.

Нам также понадобятся текстовый редактор и FTP-менеджер. Вы можете использовать любые, только желательно, чтобы тек- стовый редактор обеспечивал нумерацию строк и элементарное выделение цветом синтаксических конструкций. Я рекомендую CuteHTML из комплекта CuteFTP (рис. 1), так как он обеспечи- вает все вышеперечисленные требования, прост в обслужива- нии, не требует инсталляции (точнее — интегрируется в систему при первом запуске).

CuteFTP можно использовать и в качестве FTP-менеджера, но я применяю обычный Windows Commander, так как он еще и по- зволяет в привычной оболочке работать с файлами (рис. 2).

Устанавливаем все эти программы.

Дальше надо выделить место для вашего творчества. Это может если на отдельном

диске. только сайт, стоящего тись или появятся разные версии сайта. понадобится.

там

не

который будет эмулировать работу на-

сайт может разрас- место

на диске

быть любая

это

будет

папка в любом

в

месте любого диска,

или

даже

что

вообще

должен

но лучше,

храниться

корневом каталоге

Почему лучше?

но и сервер,

Потому,

сервера в интернете. А со временем

Так что

24

Web-страниц

Готовимся к созданию

Можно на компьютере для работы выделить отдельный диск Для этого существует много способов, в том числе и таких, кото- рые не нарушают целостности системы.

СОВЕТ

Бели хочется вьщелитъ для работы отдельный диск, то сделать это можно за счет его эмуляции при помощи утилиты subst.exe (по- ставляется в комплекте с любыми версиями Windows}. Она вы- полняет подстановку диска вместопапки. Допустим, нашсервер находится на C:\internef\, и мы хотим разместить его на отдель- ном диске Е, которого реально нет. Выполняем команду: subst Е: C:\internet. Теперь в системе появилсядиск Е, которыйявляет- ся полной копией папки C:\internet\, т.е. там находится тоже са- мое, толькотеперь это располагается в корневомкаталоге дис- ка Е. И, конечно, еще на диске С в папке internet, оттуда инфор- мация никуда не делась. Запускаем наш сервер издиска Е, и он нормально работает. При условии, конечно, что сервер настро- ен надиск Е. По окончании работы можноотключитьдиск коман- дой substE: /d. В результатедиск Е исчезнет, но информация, фи- зически расположенная в C:\internet\,останется нетронутой.

Е каталог,

например usr.

В происходить все остальные события нашего повествования.

Надеюсь, пели обзавестись, иначе зачем тогда весь этот разговор?

Дальше потребуется доступ к интернету.

им вы уже

Итак, создайте на диске

нем

будут

ус-

Для отладки скриптов (т.е. программных кодов) нам понадобит- ся программа-сервер. В сетевых технологиях используются два важных понятия: клиент и сервер. Клиент, условно говоря, — это компьютер пользователя, когда он подключен к интернету и по разным протоколам запрашивает информацию различного рода. Сервер — это удаленный другой компьютер, отдающий пользователю эту информацию.

На одном компьютере могут работать сразу несколько серверов (такие серверы называют виртуальными), а бывает, что один сер- вер состоит из нескольких мощных машин.

Вам, скорее всего, придется работать с виртуальными сервера- ми. Они наиболее распространены, несмотря на небольшое

26

Готовимся к созданию Web-страниц

и установите ту версию сервера, с которой работает ваш хостинг-провайдер . Этим вы застрахуете себя от возможных неприятностей в виде некорректной работы программы. Есть тут и «подводный ка- мень». Дело в том, что у вашего хостинг-провайдера, скорее все- го, в качестве операционной системы будет не Windows, а одна из версий Unix или даже FreeBSD. Но прелесть устанавливаемо- го сервера Apache в том, что он не просто будет работать с любой операционной системой, он будет работать одинаково. Это для нас немаловажно, так как ставить себе такие экзотические опе- рационные системы не каждый согласится. Windows как-то при- вычней.

Лучше всего, если вы скачаете

у себя на компьютере

Каждый файл на сайте http://apache.or g сопровождается цифровой подписью PGP3' с аналогичным именем файла, но другим расширением. Не спутайте собственно файл и удостове- ряющую его подпись. Также не забудьте, что скачиваем мы вер- сию сервера для Windows (рис. 4).

Скачали? Теперь попробуем поставить его. Инсталляция похожа на установку обычной программы, с которой среднестатистиче- ский пользователь компьютера сталкивается достаточно часто.

Запустите только что скачанный файл (рис. 5).

Нажимайте «Next» и соглашайтесь с условиями лицензии. Все равно там, как обычно, — никакой ответственности, используем на свой страх и риск.

«Next» придется еще несколько раз понажимать до тех пор, пока

не сервер как-нибудь. Затем следует выбрать директорию для уста- и

usr:

E:/usr/apache/.

i Хостинг-провайдер — организация,предоставляющая место на сервере для раз-

мещения вашего сайта. {Примеч. ред.) " PGP (Pretty Good Privacy, почти полная приватность) — ряд программных продуктов, позволяющих зашифровать и расшифровать файлы и электронные сообщения при их отправке и получении, а также добавлять цифровую подпись к файлам и любой другой информации, предоставляемой в цифровом виде.

на

новки.

нам

(рис. 6).

диск

Е

предложат указать имя сервера

Здесь

нужно

указать

наш

Назовите свой

каталог

{Примеч. ред.)

32

Web-страниц

Готовимся к созданию

сколько это место будет хорошим, настолько будет пользоваться успехом ваш сайт, поэтому очень рекомендую внимательно по- дойти к вопросу выбора хостинга.

Мы рассмотрим так называемый виртуальный хостинг, т.е. когда большое количество сайтов работает на одном сервере. Есть и другие способы хостинга — можно применять, например, выде- ленный сервер. Он гарантирует высочайшую скорость работы, од- нако несравним по стоимости. Не задумывались, почему так бы- стро работают всем известные сайты, а ваш так долго грузится? Одна из причин как раз и заключается в разных типах хостинга. Если можете позволить себе выделенный сервер, я вам завидую.

Первое, на что надо обращать внимание при выборе хостинга, — и хостинг лучше не дальний путь из «прекрасного далека» в «суровую действитель- ность».

Однако есть одна тонкость: большинство фирм, предоставляю- щих услуги хостинга, на самом деле не имеют собственного обо- рудования для работы, а скупают такой хостинг, образно говоря, оптом, а потом предоставляют в розницу. Цены на оптовую за- купку хостинга значительно ниже розничных, и это позволяет таким фирмам не просто зарабатывать, но и быть конкуренто- способными, обеспечивая хороший сервис и техническую под- держку. Фирма по услугам хостинга может располагаться в со- седнем с вами кабинете, а сам сервер будет находиться за океа- ном, поэтому в первую очередь уточните, где именно физически будет работать сайт.

дыскивать географически близкий, чтобы

это аудитория сайта.

Если она местная,

то

по-

делали

сигналы

Знание еще одного параметра — скорости подключения к основ- ным магистралям интернета — необязательно. В любом случае каждый уважающий себя дата-центр (место для серверов, под- ключенных непосредственно к магистралям интернета) старает- ся увеличить такой канал всеми доступными ему способами. На, этом можно не особо заострять внимание, если только вам не требуются специфические условия.

Дальше мы должны

оценить необходимое для работы сайта ме- свой

оцените его размеры, то

проект и

сто. Когда вы создадите

Выбор хостинга

33

не торопитесь делать выводы и заказывать ровно столько. Поми- в данных, мегабайты больше места, чем сам сайт.

Еще есть такое понятие, как журналы статистики сайта — log-фай- лы. Они услужливо ведутся сервером и иногда очень полезны для анализа посещаемости, но отрицательно сказываются на зани- маемом месте. Иногда log-файлы превышают все разумные пре- делы, и тогда приходится удалять их, как правило, по FTP.

и мои ящики занимают на сервере

входят

мо

и

А приходилось

непосредственно

занимаемых

объем

ли

сайта,

баз

место

и

на

самое

диске

сервера

Мне

главное

?

почта.

— да,

вам получать

спама

Таким образом, не отказывайтесь от большого места. Я

 

100

Мб ,

го развития.

И, наконец, самое главное для нас, программистов. Поддержка всех технологий программирования на стороне сервера должна присутствовать в обязательном порядке. Впрочем, я думаю, дав- но невозможно найти хостинг без такой поддержки, так как уста- новка, например, РНР ничего не стоит хостинг-провайдеру. Кроме того, надо поинтересоваться полным списком предостав- ляемых услуг и сервисов и уточнить, есть ли в его числе нужные именно вашему сайту.

Правда, этот момент совершенно не касается так называемых бесплатных хостингов. У них даже не ищите какого-то подобия программных технологий на стороне сервера. Их не будет. К то- му же бесплатны они чисто номинально, вы будете рассчиты- ваться баннерными показами, так что подумайте, надо ли вам такое удовольствие. Я вам решительно не советую пользоваться бесплатным хостингом, хотя и сам когда-то начинал именно с такого варианта. Впрочем, в качестве тестовой площадки и для хранения файлов большого размера иногда сгодятся, но не бо- лее того.

Стоит также обращать внимание на версии программного обес- печения у хостинг-провайдера. Добросовестный хостинг-про- вайдер всегда следит за выходящими обновлениями и устанавли-

Спам — ненужная информация, обычно рекламного характера, приходящая на почтовый ящик пользователя без его желания. (Примеч. ред.)

34

Готовимся к созданию

Web-страниц \

вает их у себя, причем делает это сбои

товый образец не вызывает

не бездумно,

в работе.

а только

если тес-

Несомненно, в списке услуг просто необходимо ежедневное ре- зервирование данных. Как вариант может быть ручное управле- ние резервным копированием файлов, хотя практика показыва- ет, что пользоваться восстановлением системы приходится не так уж

Дальше можно поинтересоваться возможностями персональной настройки сайта, т.е. наличием на хостинге персональной пане- ли управления. Стандартные функции — управление почтовыми ящиками, статистика, FTP-аккаунты и т.д. Приятно, если глаз радуют всевозможные «примочки» — авось пригодятся. Часто предоставляются услуги по инсталляции уже готовых чатов, фо- румов, систем статистики и баннерообмена. Это, конечно, не для нас, программистов, однако приятно.

Также очень важно присутствие хорошей, компетентной и, глав- ное, не очень медленной службы поддержки. Проблемы бывают разными, и обратиться за помощью часто больше просто некуда. Мнение о службе поддержки может появиться уже после предва- рительного общения с ней перед заказом хостинга, но не прога- дайте — пока вы не заплатили деньги, вас будут обхаживать и лелеять, а потом бросят на произвол судьбы. Универсального рецепта нет, можно посоветовать только поискать в Сети ин- формацию и отзывы о выбранном вами хостинг-провайдере, по- читать подробно форум поддержки, который, конечно, обяза- тельно должен присутствовать у хостинг-провайдера. Просто будьте внимательны, но не перегибайте палку. Не отбрасывайте в сторону тех, о которых говорят плохо. Вполне возможно, это делают конкуренты, чтобы выжить кого-то со своей территории бизнеса. Попробуйте найти других клиентов данного хостинг- провайдера и спросите их мнения. Не думаю, что кто-то отка- жется, — скажут и хорошее и плохое.

и часто.

Поинтересуйтесь методами оплаты за предоставленные услуги хостинга и найдите приемлемый для себя. Как правило, это какой-либо из вариантов удаленной оплаты — либо через банк, что долго и дорого, либо при помощи электронных платежей

Выборхостинга

35

(например, через популярную систему Webmoney), при исполь- оплату можно произвести в течение нескольких минут, не отрываясь от компь- ютера.

Кстати, хочу сказать несколько слов о системе Webmoney. Часто приходится слышать, что системы электронных платежей не яв- ляются надежным средством для того, чтобы рассчитываться за товары или услуги, потому что могут обанкротиться или украсть все деньги. Для таких приведу всего два убедительных аргумента:

первый — за каждую транзакцию (перевод виртуальных денег) с вашего счета снимаются небольшие проценты. Но в масштабе всех пользователей это огромная сумма, и гораздо выгоднее про- должать работу, а не обмануть всех, И второе — в принципе не- возможно украсть сразу все деньги из платежных систем. Они до тех пор являются такими, пока их товарные знаки (виртуальные деньги) можно обменять на наличные. А если все деньги присво- ить, соответственно нигде никто их не примет к обмену, так что это просто невозможно и бессмысленно.

зовании которых часто делают

скидки, и к тому же

Из собственного опыта могу сказать: система Webmoney работа- ет наиболее эффективно и безукоризненно. Рекомендую всем освоить данный несложный тип платежной системы.

Итак, подведем итог изложенным мыслям. Самое главное — не торопиться и не предъявлять слишком завышенных требований. Помните: идеального хостинга не существует, у каждого есть какой-то недостаток или даже не один. Нужно просто стараться, чтобы эти недостатки причиняли как можно меньше неудобства. И конечно, достоинств должно быть гораздо больше, чем недос- татков.

ИсториясозданияРНР

37

была просто невзрачная CGI-оболочка , написанная на языке Perl, которая служила исключительно для специфических целей. Такое приложение (его называют шлюзом, или CGI-программой) запускается сервером в реальном режиме времени. Сервер передает запросы пользователя CGI-программе, обрабатывающей их, и воз- вращает результат работы программы на экран пользователя. Та- ким образом, посетитель получает динамическую информацию, которая может изменяться в результате влияния различных факто- ров. Сам шлюз может быть написан на различных языках програм- мирования — C/C++, Fortran, Perl, TCL, Unix Schell, Visual Basic, Apple Script и др. Создатель PHP для разработки шлюза сначала выбрал язык Perl, как наиболее простой и доступный.

В результате дальнейшей эксплуатации выяснилось, что CGI-обо- лочка обладает малой производительностью (медленно работа- ет), и Расмус Лердорф вынужден был переписать все заново, но уже Пользователи сервера, на котором располагался сайт с первой версией РНР, заинтересовались этим языком. Лердорф не пред- полагал, что кто-то другой будет пользоваться этим языком, но РНР довольно быстро перерос в самостоятельный проект, и в на- чале 1995 года вышла первая известная версия продукта, назы- вавшаяся Personal Home Page Tools (средства для персональной домашней страницы). На тот момент РНР обладал более чем скромными возможностями. Он имел простейший анализатор кода, который понимал несколько специальных команд, а также разные утилиты для сайта, необходимые для разработки гостевой книги, счетчика посещений, чата, системы статистики и т.п. К середине 1995 года язык был основательно переработан, а так- же появилась возможность обработки форм и были добавлены функции работы с базами данных. В таком виде вышла вторая версия продукта. Затем была более дополненная третья и, нако- нец, современная нам четвертая" версия РНР.

скорост ь работы РНР .

на язык е

С, что позволило увеличить

Сегодня РНР — это мощный кроссплатформенный набор средств, который располагается на сервере и предназначен для обработки

CGI

(Common Gateway Interface, общий шлюзовой интерфейс) — стандарт,

предназначенный для создания серверных приложений. (Примеч. ред.) I К моменту выхода книг и была готова верси я РН Р 5.0 beta 4. (Примеч. ред.)

38

Знакомьтесь РНР

специального кода, встраиваемого в HTML-страницу. Благодаря

этому появилась возможность легко создавать динамические сайты. Файлы, созданные таким образом, хранятся и обрабаты- ваются на сервере. Когда посетитель запрашивает документ

с PHP-кодом, скрипт обрабатывается не браузером посетителя,

как, например, при использовании JavaScript, а сервером (точ- нее, сервер передает управление специальной программе, обра- батывающей PHP-код). Посетителю передаются уже только ре- зультаты работы. Точно так же работает CGI-программа, напи- санная на С или Perl.

Но в отличие от CGI, PHP-код можно встраивать в любое место HTML-страницы, что является основным преимуществом РНР по отношению к CGI. Кроме того, РНР очень прост для изуче- ния и не требует каких-либо специфических знаний. Напри-

мер, мне вполне хватило опыта, приобретенного лет десять на- зад на уроках информатики в школе, на которых мы изучали

язык

Несмотря на столь радужную характеристику, есть у РНР и не- достатки. Стоит отметить довольно медленную, по сравнению

с CGI-программами, работу больших (именно больших, так как

маленькие скрипты не вызывают существенной нагрузки) РНР- скриптов. РНР — интерпретируемый язык', что непременно ве- дет к ухудшению производительности в случае очень больших и сложных программ, но для выполнения несложных манипуля- ций на сайте РНР — лучший выбор. К тому же последние версии РНР практически лишены этих недостатков. Полностью перепи- санный и оптимизированный код сделал свое дело, и если ваш хостинг-провайдер позволяет использовать РНР версии более 4.1 — будьте спокойны. Этому очень способствовал тот факт, что частично РНР стал компилируемым языком. Но только частич- но, в нем очень гармонично уживаются и интерпретатор, и ком-

Basic на очень модных

Yamaha.

и дорогих

тогда

Интерпретатор — транслятор (программа или устройство, которое переводит программу с одного языка программирования на другой), анализирующий ко- манды или операторы исходной программы и немедленно выполняющий их. Та- ким образом, интерпретатор одновременно и транслирует, и выполняет задан- ную программу в отличие от компилятора, который только транслирует всю про- грамму без ее выполнения. (Примеч. ред.)

пилятор. Недаром к середине 2000 года РНР использовался бо-

лее

2,5

чем

на

млн сайтов.

Установк а РНР

Прежде всего надо скачать РНР. Идем на официальный сайт

http://www.php.ne t (рис. 12).

«downloads»

и

ищем

там

раздел

Рис. 12. Главная страница сайтаwww.php.net

После того как откроется страница, скачиваем два файла из раз- дела Windows Binaries (рис. 13).

Решайте, какую версию скачать в зависимости оттого, какая ус- тановлена у вашего хостинг-провайдера. Лучше всего, конечно,

скачивать более свежую версию, так как в ней наверняка исправ- лены старые ошибки.

Рис.

13.

CmpaHuu,acaumawww.php.netdAHCKa4ueaHUH

Итак,

внимание, что один с расширением ехе,

Обратите

вать.

— zip.

Запустите ехе-файл (рис. 14).

По традиции нажимайте «Next», соглашайтесь с условиями ли- цензии и выбирайте тип установки Standard. Далее необходимо выбрать директорию. Как вы помните, у нас есть специальная папка для работы — usr. Указываем РНР путь e:\usr\php\ и уста- навливаем его туда. Придется еще ввести адрес SMTP-сервера и свой адрес электронной почты. Введите туда что-нибудь. Веро- ятнее всего, при работе на домашнем компьютере вам это не по-

( надобится. Все равно отправлять почту вы будете уже в интерне- те, а там свои настройки.

Рис. 14. Окно установки РНР

Еще надо выбрать сервер, с которым будет работать РНР . Как вы помните, это Apache. Если в процессе установки появятся ка- кие-нибудь диалоговые окна, не стоит обращать на них особого внимания.

Теперь осталось установить дополнительные модули и научить сервер Apache распознавать РНР-код.

Настройка

РНР для

Apache

Откройте конфигурационный файл Apache httpd.conf из папки E:/usr/apache/conf при помощи любого текстового редактора, например «Блокнота» или Word.

42

Знакомьтесь РНР

«#».

в Это — комментарии. Как правило, они на английском, но есть Apache.

Ищем

Видите,

нем

много текста,

перед

которым стоит символ

варианты русского

следующую

строку:

#AddType

application/x-httpd-ph p

.php

(убираем символ

«#» в начале

Снимаем с нее комментарий ки). распознавать файлы с расширением php. Сразу же после этой строки допишите:

ее. Это позволит серверу

стро-

Если этой строки нет, добавляем

ScriptAlia s

/_php/

"путь

РНР/"

к

Action application/x-httpd-ph p " / php/php.exe"

«Путь к

не случайно. мы создаем синоним для директории с установленным препро- цессором РН Р (php.exe) и связываем все файлы с РНР-кодом непосредственно с самим препроцессором.

— последний слеш, он там

РНР»

случае это e:/usr/php/.

He забудьте про

в нашем

Этим нехитрым способом

Сохраните изменения в файле конфигурации и попробуйте

пустить Apache.

в ская ошибка. Исправьте ее и попробуйте снова.

Будем считать этот этап пройденным.

Если смотрите указанную

за- сообщение об ошибке, про- скорее всего это синтаксиче-

вы получили

нем строку,

Виртуальные хосты в Apache

образом , что виртуальных на не один сайт, а сколько угодно. Мы научимся делать два, остальные аналогично.

серверов.

на

Как

я

уже

одном

говорил,

компьютере

серверы

Сети устроены

в

могут быть десятки

и

таки м

сотни

Нам придется организовать что-то подобное у себя

компьютере, чтобы

иметь

возможность

разрабатывать

дома

вы сможете добавить

Опять открываем знакомый нам файл конфигурации httpd.conf в

и добавляем

конец

127

файла строки:

О

.

О

. 1>

<VirtualHos t

ServerAdmin admin@servernam e . com

Установка PHP

4 3

ServerName

www.servemame.com

Directorylndex index.php3

index.htm

index.phtm l

index.php

index,

htm l

index.shtm l

index.shtm

DocumentRoot

"e:/usr/public_html/host/virtual "

ScriptAlias

/cgi-bin/

"e:/usr/public_html/host/virtual/

cgi-bin/"

ErrorLog e : /usr/public_html/host/virtual/logs/error .

log

CustomLog

e:/usr/public_html/liost/virtual/logs/access.lo g

common

</VirtualHost>

VirtualHost

127.0.0.2>

ServerAdmin

admin@my-site.com

ServerName

www.my-site.com

Directorylndex index.php3

index.htm l index.shtm l

index.phtm l

index.shtm

index.php

DocumentRoot

"e:/usr/public_html/host/start "

index.htm

ScriptAlias

/cgi-bin/

"e

:/usr/public_html/host/virtual/

cgi-bin/"

ErrorLog

e:/usr/public_html/host/virtual/logs/error.lo g

CustomLog

e:/usr/public_html/host/virtual/logs/access.lo g

common

</VirtualHost>

 

И таким же образом дальше, по мере необходимости. Обратите внимание на различия. В строке с VirtualHos t указываются разные IP-адреса, по которым будет осуществляться доступ к вы- бранным сайтам. Имя сервера и почтовый ящик администрато- ра — разные. В строчке с DocumentRoot надо указать путь к ди- ректории, в которой будут храниться файлы конкретного сайта.

44

Знакомьтесь РНР

В каталоге virtual нужно создать еще один каталог — LOG для log-файлов Apache. Сами файлы создавать вручную не надо, они будут созданы Apache автоматически.

СОВЕТ

Если вы не очень нуждаетесь в log-файлах, можно периодиче- ски их удалять. Это позволит серверу работать немного быст- рее, да и место сэкономит. Сделать это можно только тогда, ко- гда сервер остановлен. Log-файлы можно сохранять в разные папки для каждого сайта отдельно, но если они не очень нуж- ны, можно задать в одну папку, чтобы легче было удалять.

Как обычно, сохраните файл конфигурации и попробуйте запус- тить Apache. Если ошибка — ищите ее в указанной строке.

Тестирование РНР

Убедимся, что PHP-скрипты работают. Для этого создадим в ди-

ректории d:/usr/public_html/host/virtual щим содержанием:

файл test.php со следую-

<? phpinfo(); ?>

Теперь наберите в браузере: http : //127.0.0 . I/test.php . Должна отобразиться страница с разнообразной информацией

о РНР, которая генерируется функцией phpinfo ()

Все, РНР работает.

(рис. 15).

и настройка дополнительных модулей

Установка

Обратите внимание на второй файл, который мы скачали. Он име- ет расширение zip и представляет собой обычный архив. Распакуй- те его. Найдите в нем директорию extensions и скопируйте ее пол- ностью к себе в каталог с установленным РНР.

Это — дополнительные модули, которые нужны для работы с изображениями, службами улучшенной криптографии и т.д.

А если и не нужны сразу, то некоторые готовые разработки могут их использовать, так что пусть будут.

Рис. 15. Страница информации о РНР, сгенерированная функцией phpinfoQ

Теперь надо подключить втором

Готового Надо отме- тить, что и без этого файла РН Р сможет работать, но у нас не бу- параметры.

его варианта нет, придется создать самостоятельно.

новые модули к РНР. Делается

— php.ini.

файле

это во

важном

конфигурационном

дет возможности настраивать нужные

Итак, в дистрибутиве ищем файл php.ini-recommended и пере- именовываем его в php.ini. Редактировать можно, как обычно, в любом текстовом редакторе, так как он, как и конфигурацион- ный файл Apache, представляет собой простой текст.

Открыли?

Error

handling

and

logging

(рис.16).

Этот раздел отвечает за настройку ошибок, выводимых на экран. Нам очень важно видеть эти ошибки, чтобы понимать, как рабо- не

тает скрипт. А точнее

— почему он

работает.

Рис.

16.

Раздел Error handling and logging в файле php.ini

Здесь чуть ниже будет переменная error_reportin g = E_ALL

Конечно, можно оставить ее такой, какая она есть, но тогда при- готовьтесь получать сообщения об ошибках по поводу и без по- вода. Например, если происходит попытка использования не- инициализированной переменной (см. ниже). Это не страшно, так как в этом случае переменная автоматически инициализиру- ется и приравнивается или к нулю, или к пустой строке, в зави- симости от типа, но сообщение об ошибке все равно появится на экране. Чтобы избежать таких ситуаций, надо прописать тут:

error_reportin g

=

EJV^RMNG.

табл.

В

1 приведен

полный

список доступных значений: вы можете выбрать более подходя- щие для вашего сайта.

Значение

1.Типы 1 ошибок в РНР

Таблица

Константа

Описание

i

ERROR

2

E_WAKNTNG

Предупреждения на стадии выполне- ния (нефатальные ошибки)

4

ARSE

8

EJNOTICE

16

CORE

ERROR

32

ECOREWARNING

64

ECOMPILEERROR

128

ECOMPILEWARNING

256

EUSERERROR

512

E_USER_WARNTNG

1024

E_USER_NOTICE

2047

EAL L

Уведомления на стадии выполнения (менее серьезные, чем предупрежде- ния)

Фатальные ошибки при запуске РН Р

Предупреждения (нефатальные ошиб- ки) при запуске РНР

Фатальные ошибки на стадии компи- ляции

Предупреждения на стадии компиля- ции (нефатальные ошибки)

Сообщение об ошибке, генерируемое пользователем

Предупреждение, генерируемое поль- зователем

Уведомление, генерируемое пользова- телем

Все вышеуказанное

Еще чуть дальше нужно найти параметр displayerror s = Off и установить его в On, включив, таким образом, выдачу сообще- ний об ошибках именно на экран, а не в log-файлы. Там просто неудобно искать этиошибки.

Data

Handling

переменную registerglobal s

=

Off

On

(рис .

17).

окружения'

для по их имени, а не через специальный массив переменных ок- ружения.

считывания

переменные

непосредственно

Рис. 17. Настройка переменныхокружения в

файлеркрлт

Теперь нужно указать

модули расширения. Он задается в переменной с Если этот путь указан неправиль-

дится

нахо-

путь

к

папке,

в которой находятся extensiondir .

тем,

где именно

наши

Задайте его правильно, в соответствии

у вас папка с

модулями.

Переменные окружении — это параметры операционной системы, содержащие такие сведения, как имя диска, путь или имя файла. Например,переменнаяок- ружения TEMP задает папку, в которой хранятся временные файлы программ.

{Примеч.

ред.)

Установка РНР

4 9

но,

ошибку.

при

загрузке

ненайденного

модуля

РНР

будет

выдавать

Полученный таким образом файл php.ini надо скопировать в директорию, в которой установлена Windows ( как правило, одноименная директория в корневом каталоге диска С). Имен- но там РНР будет искать этот файл. В последних версиях РНР его можно сохранить в директорию с установленным серве- ромАраспе.

Учтите, что загрузка и использование дополнительных модулей может в значительной степени снижать производительность ин- терпретатора РНР. Лучше всего использовать в работе только те модули, которые нужны при работе сайта.

об РНР написано, что данные, полученные из формы или передан-

одном важном моменте.

 

так:

name.phtml?a=l&b=2 ,

автоматически $Ь. На самом деле это

 
 

становятся переменными РН Р быть не совсем так. Дело

в том, что

безопасности,

 
 

4.1,

так,

переданные значения не назначались переменным, потому что уже Хотя ным, так как нужные переменные всегда можно отследить щитить, но все-таки это факт.

в скрипте

сомнитель-

за-

переменные и взломать

таким образом легко уничтожить

существующие

это является

скрипт.

и

За назначение переменных отвечает параметр register_global s в php.ini. Если registerglobal s = On, то все полученные скриптом данные будут назначены соответствующим перемен- ным. Если register_global s = Off, то получить значение пе- ременной можно, обратившись к массиву, соответствующему способу передачи данных в скрипт.

На этом установку можно считать завершенной. Осталось пого- ворить о некоторых удобствах.

Переносимость и совместимость

Один раз настроив свой сервер, хочется знать, как избежать дан- ной процедуры каждый раз при переустановке системы. Такая возможность есть.

перед этого каталога. Этим вы застрахуете себя от возможных проблем.

переустановкой системы надо сделать резервную

Если ваш сервер,

РНР и сайты находятся в одном каталоге,

копию

После того как система переустановлена, нужно восстановить только два файла — php.ini, чтобы восстановились все на-

стройки РНР (если они не делались, забудьте об этом файле, РНР будет работать с установками по умолчанию), и hosts, ко- торый находится по адресу E:\WINDOWS\system32\drivers\etc

(рис.

18). Это служебный

файл Windows,

который нужен для

сопоставления имен. Его местоположение меняется в зависи- мости от версии Windows, но вы можете воспользоваться поис- ком, чтобы найти этот файл.

Рис. 18. Файл hosts

Вот пример содержимого файла hosts с моего компьютера:

интаксис PHP

51

127.0.0.1

localhost

127.0.0.6

204040

127

.0.0. 2

virtua l

127

.0.0. 3

pric e

127.0.0.4 star t

127.0.0.5 tes t

Как видите, он просто позволяет обращаться к сайту, используя имена вместо цифр. Смело редактируйте его в соответствии со своими потребностями. И, конечно, храните резервные копии.

Итак, если диск не меняется, достаточно восстановить эти два файла. Если же по каким-то причинам есть необходимость сме- нить диск, на котором будет работать сервер, надо открыть файл httpd.conf, расположенный в папке e:/usr/apache/conf. Откройте этот файл, например, в Word, при помощи поиска и замены про- изведите замену имени старого диска на новый (рис. 19), и после этого сохраните файл.

То же

чуть выше.

говорили

php.ini,

о

самое

проделайте

и

файлом

с

нем

мы

Можно протестировать работу сервера в новых условиях и, если все в порядке, приступать к программированию, если нет — искать ошибку на основе информации, которую выдает окно DOS-сес- сии Apache, Как правило, одну за другой все ошибки устранить не сложно.

Теперь, когда все готово к работе, можно приступить непосред- ственно к изучению языка программирования РНР.

Синтакси с РНР

Как и у всякого языка программирования, таксис.

и мисты, пишущие на этих языках, смогут освоить РНР буквально за несколько дней. Но даже если вы никогда не программировали,

у РНР есть свой син-

Perl. Програм-

Он очень похож на синтаксис языков

С

Рис.19.РедактированиефайлаИИрс1.соп/

PHP поддастся вам легко и обеспечит базу для перехода на языки более сложного уровня. Все команды и правила просты. Синтак- сис включает в себя операторы, разделенные между собой точ- кой с запятой.

ВНИМАНИЕ

Одна из основных ошибок начинающих программистов — от- сутствие точки с запятой между операторами. Список других распространенных ошибок смотрите в приложении 2.

К счастью, ошибки в РНР по умолчанию выводятся на экран мо- нитора (в отличие от CGI , где все ошибки записываются в log- файл, что, согласитесь, не очень удобно при анализе програм- мы) , и найти ошибку при определенной внимательности и опыте не составит большого труда. Тем более что умный интерпретатор подскажет номер строки, в котором произошла ошибка.

СинтаксисРНР

53

Чтобы сервер знал, что в файле есть PHP-код, расширение фай- та нужно сделать либо phtml, либо php3, либо php. Вообще, мо- жет быть назначено любое из этих расширений, но я рекомендую в целях совместимости всегда использовать phtml.

Каждый скрипт в РНР начинается с <?php и заканчивается ?>.

В любом месте скрипта РНР можно поместить комментарий, на-

с большой и занимает только одну строку, можно поставить перед

ним // и таким образом закомментировать любую строку до ее конца. Как обычно, пробелы, символы табуляции и перевод строки просто игнорируются ния читабельности кода РНР .

и могут применяться для улучше-

чинается он

Если комментарий не-

/*, а заканчивается

— */

СОВЕТ

В коде РНР удобно прятать комментарии к собственной про-

грамме и пояснения для себя. ЕсливслучаесНП\/11_комментарии вместе с кодом попадают к посетителю в браузер, то РНР свой код никак не отдает, а потому и комментарии вроде есть, а по- сетителю они не передаются.

Теперь напишем наш первый скрипт. Собственно, это не будет программой в полном смысле слова, но для тренировки подой- дет. Наберите команду:

<?

phpinfo();

?>

Сохраните с расширением phtml и запустите к файла.phtml. Удивлены? мации?

ре,

обратившись

нему

при

Не

помощи

этот

адреса

ожидали так много

файл

в

браузе-

127.0.0.1/имя

разной инфор-

Phpinfo — это функция для получения информации о возмож- ностях и настройках РНР. Она позволяет получить данные даже

на удаленном сервере, т.е. вам доступна эта информация без об- ращения к администратору сервера. Только для этого нужен дос-

туп

В приложении 3 приведены некоторые другие наиболее распро- страненные функции РНР.

FTP.

к серверу

по протоколу

54

Знакомьтесь РНР

Возможности PHP

Работа с базами данных

Использование РНР для создания Web-страницы, с базой данных, невероятно просто.

работающей

На момент написания книги поддерживаются следующие базы данных: Oracle, Adabas D, Sybase, FilePro, mSQL, Velocis, MySQL, Informix, Solid, dBase, ODBC, Unix dbm, PostgreSQL. Несомнен- но список будет постоянно расширяться разработчиками РНР. Я не сомневаюсь, что если у вас есть на сервере база данных, то это одна из этих перечисленных. Впрочем, если нет, не беда, потому что РНР с легкостью позволяет сделать эмуляцию базы данных, делая запись непосредственно в файлы. Лишь бы места хватило.

HTTP-аутентификация средствам и РНР

Аутентификация позволяет выполнить вход в зону, закрытую па- ролем, и доступна только при использовании модуля Apache. При использовании специальной функции вызывается диалоговое окно, позволяющее ввести логин и пароль, а в дальнейшем легко проверить введенные данные. Но на самом деле может оказаться проще и удобней самостоятельно организовать закрытую зону и предоставить для авторизованных посетителей к ней доступ.

Работа с изображениями

РНР может обрабатывать ботать с изображениями GIF , JPEG или PNG. Для этого вам надо скомпилировать РНР с библиотекой функций изображе- ния — GD.

не только текст и HTML-код, но и ра-

Поддержка закачки файлов

Позволяет реализовать закачку файлов на сервер пользователем. Пригодится, например, для обмена музыкой, рефератами, про-

ВозможностиPHP

5 5

граммами и т.д. Кроме того, РНР предоставляет полный кон- троль над загружаемым файлом, в том числе есть ограничения на размер, а также возможность управлять загруженным файлом.

Поддержка HTTP-cookie

Cookie — механизм для сохранения данных (небольших файлов до 4 Кб с информацией) в удаленном браузере и, таким образом, отслеживания или идентификации пользователей (см. приложе- ние 4). Вы можете устанавливать файлы cookie, используя функ- цию setcookie() . Cookie — часть HTTP-заголовка, поэтому функция setcookie {) должна вызваться прежде, чем браузеру будет послана какая-нибудь информация для вывода, вплоть до пробела. Любой cookie, посланный вам от клиента, будет автома- тически превращен в РНР-переменную.

Использование регулярных выражений

Регулярные выражения используются для сложного манипули- рования строками в РНР. На мой взгляд, это одна из самых по- лезных возможностей РНР. На основе этих функций со строка- ми можно сделать все, что угодно.

Обработка ошибок

Реализована как на глобальном, так и на локальном уровне. Вы можете вообще отключить вывод сообщений об ошибках (полезно в готовом рабочем варианте,

на экран пользователя программы, закачанном на сервер) или обработать функцию таким образом, чтобы ошибка не была отображена, а сообще- ние об ошибке было отправлено по почте на любой адрес. Хотя, как правило, на это не обращают внимания, и порой в результате неправильных действий такая ошибка выводится в браузер. Программа может получать сведения об ошибочно- сти действий и таким образом принимать решения о своей дальнейшей работе.

56

Знакомьтесь — РНР

Управление электронными

письмами

Оно сведено к одной функции. Есть адрес и текст, но правлено без проблем. В дальнейшем мы рассмотрим не один пример с поддержкой отправки писем.

На своем личном опыте я могу сказать, что сайт, построенный полностью на РНР, не испытывает каких-либо задержек в от- крытии и работе, даже несмотря на то, что интерпретатор РНР испытывает значительные нагрузки при размещении на сайте новостей, счетчика статистики, генерации баннеров несколь- ких типов и «склеивания» страницы из нескольких фрагмен- тов. Это и многое другое будет нормально функционировать при условии элементарной внимательности и качественнойна- стройки сервера.

который нуж-

отправить на этот адрес.

При помощи РНР письмо

будет от-

не полные, но по мере знакомства с ним вы научитесь создавать (это

очень

Конечно,

перечисленные

возможности языка

РНР далеко

руки

вещи я образно, конечно) и узнаете значительно больше.

сложные

буквально

одним движением

Вывод на экран и переменные вРНР

РНР очень легко позволяет организовать вывод текста на экран. Рассмотрим пример скрипта:

<?php

echo

"Привет,

мир!" ;

СОВЕТ

именнотак:

Не обязательно открывающий тег РНР писать

<?php. Вполнедопустим вариант <?, хотяэто и не по стандарту. Но если уже давно поддерживаются оба варианта, почему бы второму тоже не стать стандартом? Выбирайте то, что вам боль- ше нравится.

57

Вывод на экрани переменные в РНР

HTML-до-

Этот скрипт может быть расположен и просто выводит на экран фразу «Привет, мир!». с функций PHP — echo, которая выводит информацию на экран пользователя.

Чтобы разобраться в работе скрипта, давайте познакомимся с пе- ременными.

Переменная характеризуется именем, типом и значением. Имя может быть любым и включать в себя цифры, буквы английского алфавита и разрешенные символы (например, символ подчерки- вания или тире). Все чинаться со знака $, что позволяет интерпретатору безошибочно отличать переменные от функций. Давайте ясные и по возмож- ности «говорящие» имена своим переменным, однако не слиш- ком длинные, максимум из двух слов. Разделить два слова мож- но, поставив «_» (символ подчеркивания) или написав второе слово с заглавной буквы.

переменные в РН Р обязательно должны на-

кумента,

в любом

ничего

наиболее

месте

сам

по

себе

он

не

несет

из

полезного, так как

Но таким

обра-

распространенных

зом

мы

знакомимся

одной

ВНИМАНИЕ

Названия функций в РНР независят от регистра (т.е. ECHOто же самое, что echo), а имена переменных — регистрозависимы (т.е. $os и $OS — разные переменные).

на целочисленные, запятой, строковые, объектные, булевы и массивы.

Заранее описывать тип переменной, как в языках Pascal или

услов- ное, и все же каждая переменная автоматически стремится ис- пользовать правильный тип, соответствующий своему значению.

Visual Basic, не требуется.

По типу переменные делятся

с

плавающей

Разделение на типы в принципе

ВНИМАНИЕ

Бели мы попытаемся использовать неинициализированную пе- ременную в работе, это посчитается интерпретатором за ошиб- ку. Но это не является ошибкой, так как переменная тутже будет

58

Знакомьтесь PHP

инициализирована и ее значение будет приравнено к нулю или пустой строке взависимости оттипа.

Однако этосправедливо, только если уровень обработкиоши- бок не выставлен на максимальный контроль. Если же уровень ошибок максимален, обращение к несуществующей перемен- ной вызовет сообщение об ошибке (программа при этом будет работать дальше). Чтобы подавить такое сообщение об ошиб- ке, можно заранее описать все использующиеся в программе переменные, присвоить им значение «ноль» или «пустая стро- ка». Второй вариант подавления ошибки: перед именем пере- менной поставить символ @, который подавляет сообщения об ошибках. Воттак: @$name; if (@$name) и т.д. Для постоянно- го подавления сообщений о таких ошибках нужно соответ- ствующим образом настроить конфигурационный файл php.ini

(см. выше).

быть практически лю-

типом может

с бым. Например, $а = 5. Это говорит о том, что имя перемен- ной — $а, тип — целочисленный, значение — 5. Еще примеры:

Значение в соответствии

1 < ?php

2 $name = 6;

3 $hl2 = 4.89;

4 $file_type = "path/index.phtml";

5 $os = "PHP для всех!";

6 ?>

Во второй строке нашего скрипта переменной $name присваива- ется значение 6, и эта переменная автоматически становится це- лочисленной.

В третьей строке кода переменной $hl2 присваивается значение 4.89, которое имеет тип числа с плавающей запятой. В четвертой и пятой строках кода переменным присваиваются значения со строковым типом. Все, что заключено в кавычки (включая циф- ры) , будет интерпретировано как символьная строка.

5 9

I

Простейшие арифметические операции

Простейшие арифметические операции

Как и в других языках программирования, над переменными можно совершать любые арифметические действия в соответ- ствии с обычной логикой. Достаточно указать переменную для результата, знак равенства и перечислить в порядке выполнения действий переменные или значения с необходимыми арифмети- ческими знаками. Пример:

<?php

=

5;

=

3;

=

4;

$d

=

+

$с;

echo

$d;

Результат работы скрипта — вывод на экран цифры 4,

РНР поддерживает все математические функции, многоуровне- вые скобки, логические операции, операции увеличения или уменьшения на единицу и многое другое.

В РНР есть функции дляувеличения или уменьшения перемен- ной на единицу. Для этого нужно указать имя переменной и за соответ- ственно. Например, $а++; —переменная $а будет увеличена на единицу.

ним без знака равенства подряд два плюса или минуса

Нескольким переменным можно одновременно присвоить одно значение: $а = $Ь = 4; — обе переменные и $а и $Ь будут рав- ны четырем. Вот еще несколько примеров нестандартных ариф- метических операций в РНР:

<?php

$b =

$a

=

5;

/*

 

*/

60

Знакомьтесь - PHP

$с = $а++; /* последующее увеличение, присваиваем $с начальное значение $а {5) , а затем увеличиваем $а на единицу */

/* предварительное увеличение, при-

сваиваем переменным $d и $е значение $Ь, увеличенное

на

присваиваем переменной $f удвоен-

ное значение переменной $d до его увеличения,

$е = $d = ++ $b;

единицу, т.е. $d и $е равны 6 */

$f = 2 * ($d++) ; /*

т.е.

2 * б = 12, и затем увеличиваем $d на единицу */

$д - 2 * (+ + $е) ; /* присваиваем переменной $д удвоен- ное значение переменной $е после его увеличения, т.е.

2 * 7 = 14 */

$h = $g += 10; /* сначала увеличиваем значение $д на 10, что дает в результате 24, а затем присваиваем это значение переменной $h */

скрипт,

вы можете вставить к себе на страницу. Задача: вывести на экран че- рез пробел определенное количество последовательных чисел. Внаием случае это 1, 2,3,4 , 5, т.е. пять последовательных чисел, начиная с единицы. Кодреиения:

Рассмотрим

следующий работоспособный

который

<?php

$i

=

1;

// присваиваем переменной

$i значение 1

echo

$i; // выводим переменную $i

$i++;

// увеличиваем переменную на единицу

echo

" ". $i ; // выводим увеличенную на единицу пере-

менную,

// повторяем эти две операции необходимое раз

не забыв о пробеле

$i++; echo " ". $i ;

количество

Простейшие логические

операции

61

echo

"

"

. $ i ;

$i++;

echo

"

" .

$ i ;

?>

Пример, конечно, не самый лучший , но основные понятия язы- ка уяснить можно.

Увеличение переменной н а единицу реализуется указанием двух плюсов после переменной — $i+ +, хотя ничего не мешает писать так— $i = $ + + 1;.Выполнив эту инструкцию пять раз, соот- ветственно увеличим переменную н а пять, выводя между делом результат и не забывая о пробелах. На экран в результате работы скрипта будут выведены подряд (в строку) цифры «1 2 3 4 5».

строчку,

Если а в столбец, то вместо пробелов в кавычках надо было бы поставить

вывести указанные

бы стояла

задача

цифры

перевода строки <Ьг>. Вот так — echo

не в

" <b г >". $ i; .

HTML-тег

В результате на экране появится столбик из пяти цифр.

Теперь рассмотрим алгоритм этого скрипта:

начать скрипт;

присвоить переменной $i значение 1;

вывести переменную $i н а экран;

увеличить переменную $i н а единицу;

вывести пробел и переменную $i н а экран;

выполнять столько, сколько надо;

 

закончить скрипт.

Как видите,

сложного нет. Просто делаем то, что

надо.

что получится в HTML-коде:

А теперь посмотрите,

н и следа РНР! Это ли не мечта многих — иметь возможность скрыть свой HTML-код.

1 Для решения данной задачи лучше было бы воспользоваться циклом (см.ниже),

но на первых порах для знакомства я буду стараться все максимально упрощать.

62

Знакомьтесь — PHP

Простейшие логические операции

Очень просто организуется сравнение: «если — то — иначе». Для этого в РНР применяется конструкция:

if

(

)

{

}

else

{

}

Есть различные варианты синтаксиса этого оператора, но этот — основной и самый логичный из всех. Вот его расшифровка в пе- реводе на русский (а точнее, на алгоритмический) язык:

(если)

if

(условие)

(то)

{выполняется

то,

скобки}

(иначе) else

{выполняется

то,

скобки}

заключено

После фигурных скобок ставить точку с запятой, как обычно ме- жду операторами, не обязательно. Но внутри фигурных ско- бок — разделение через точку с запятой, если только там не один оператор. Если же оператор один, то и круглые скобки могут не ставиться.

в

эти

фигурные

операторов между собой проводится только

СОВЕТ

Я не рекомендую сильно увлекаться разными вариантами на- писания. Можно запутаться и не заметить элементарной ошиб- ки. Лучше пользоваться стандартным, понятным и удобочитае- мым способом, что позволит избежать глупых ошибок.

Допускается вложение нескольких операторов условия один надо честву закрывающих фигурных скобок, так как при отсутствии даже одной из них интерпретатор выдаст ошибку.

в другой.

В этом случае

быть очень внимательным к коли-

ВНИМАНИЕ

Если вы где-то забыли закрыть скобки или поставили лишнюю скобку (например, в начале кода), интерпретатор вщцаст сооб- щение о том, что ошибка произошла в последней строке кода. Бесполезно искать неточность в этой строке, ищите лучше там, где в последний раз вставляли условный оператор. Найти та- кую потерявшуюся скобку в большом скрипте бывает очень

Циклы

63

сложно, для этого заранее заботьтесь об удобочитаемости скрипта. Это сэкономит не один час отладки в дальнейшем.

Рассмотрим несложный пример:

<?php

= 5;

 

= 9;

if

(

==

)

{ echo

$b -

$а;

} els e

{ echo

$b . $a;

} '

?>

При проверке истинности применяются два знака равенства для того, чтобы интерпретатор мог отличить сравнение от при- сваивания.

ВНИМАНИЕ

Программа небудет работать правильно, если вызабылипо- ставить двойной знак равенства при проверке истинности. Иучтите, интерпретатор даже не подумает предупредить вас об этом! Для него это вполне обычная операция присваивания и одновременно проверки условия на истинность-ложность.

Результат работы вышеприведенного скрипта — 95, так как $а не равно $Ь, а команда echo $b.$a; (между переменными стоит точка, которая служит для объединения результатов в одну стро- ку, а не знак арифметической операции) выводит подряд указан- ные переменные. Таким образом, точка служит для склеивания строк или переменных.

Проверка ложности обозначается символами ! =, допустимы все символы

остальные (например — or , and, >, <= и т.д.).

арифметические,

логические

и операторы

Циклы

Циклы в программировании — это повторяющиеся несколько

раз операции. Для реализации циклов в РНР используются опе-

раторы while, do

fo r и foreach. Начальное значение

while,

64

Знакомьтесь PHP

указывается в начале цикла, а длительность его выполненияог- раничивается каким-либо условием. копирование нескольких фай- выполнения этого задания можно описать так:

Примером цикла может служить

лов. Алгоритм

задать количество файлов;

установить счетчик скопированных файлов в ноль;

скопировать файл;

 

проверить, не равно ли значение счетчика заданному количе- ству файлов;

если нет — увеличить счетчик скопированных файлов и вер- нуться к началу цикла (опять скопировать файл);

если да — закончить цикл.

Каждый проход цикла называется итерацией.

Теперь рассмотрим, как циклы реализуются в РНР:

<?php

$i

=

0;

$n =

10;

while

($i

<= $n)

:

echo

$i."<br>\n " ;

endwhile;

Смысл скрипта очень прост. Присваиваем переменной $i значе- ние, соответствующее началу цикла, а переменной $п — значе- ние конца цикла. Далее открываем цикл оператором while () , и внутри его скобок описываем условие, при выполнении кото- рого цикл будет продолжать свою работу. В нашем случае выпол- нение не прервется, пока $i < = $n. Как только это условие будет

Циклы

65

нарушено, управление передастся следующей за циклом опера- ции. Внутри цикла могут быть любые команды РНР (разделен- ные между собой как обычно — точкой с запятой).

Только нужно следить затем, чтобы переменная $i , используе- мая в цикле, была увеличена (и совсем не обязательно на едини- цу), иначе цикл станет бесконечным, и интерпретатор будет вы- полнять его, пока не закроется сессия (окно браузера). Оператор endwhile означает конец цикла.

Скрипт, описанный здесь, выводит на экран браузера цифры от

О ке функции вывода echo после переменной $i м ы указали HTML-тег перевода строки <Ьг>.

еще полнения указанной выше задачи.

Для

10.

до

Причем числа

будут выведены в столбик, так как в стро-

примера я привожу

один, более

быстрый вариант вы-

<?php

$i =

0;

while

($ i

<=

10)

echo

$i++."<br>\n";

Удивительно, но при выполнении этих двух примеров получает- ся одинаковый результат, а скрипт практически поместился в одну строчку. Разница в стиле применения оператора цикла

и в том, что переменная цикла выводится на экран одновремен- но с увеличением.

Рассмотрим еще один пример, основанный на применении кон-

струкции PHP do

тем, что значение логического

е а после окончания, работы,операторов, включенных в цикл. Та-

ким образом, do что

while.

от while

н

до ,

Это тоже

цикл, и отличается выражения

проверяется

while

гарантированно будет выполнен хотя бы

один раз,

в

случае

с while

совсем

н е обязательно

(при

ис-

66

Знакомьтесь — PHP

пользовании while, если условие ложно, управление сразу будет

передано дальше). Для циклов do вид синтаксиса:

while

существует только один

<?php

$i

do

=

0;

echo $i."<br>\n";

while

?>

($i <= 10 ) ;

цикла — for.

ехргЗ)

Еще один оператор

(exprl;

торов}

for

expr2;

Его синтаксис:

{последовательность

опера-

Первое выражение (exprl) является безусловным и выполняет- ся в начале цикла. В начале каждой итерации выполняется ехрг2. Если оно истинно (равно true) , то цикл продолжается и выполняется вложенный(е) оператор(ы). Если оно ложно (рав- но false), то цикл заканчивается. В конце каждой итерации вы- полняется ехргЗ.

Каждое из этих выражений может быть пустым. Если ехрг2 пус- то, то цикл продолжается бесконечно (РНР по умолчанию счита- ет его истинным, как и в языке С). Это не так бесполезно, как кажется, так как зачастую требуется закончить выполнение цик- ла, используя оператор break в сочетании с логическим услови- ем, вместо использования логического выражения в for. Если внутри любого цикла встречается оператор break, цикл безус- ловно прекращает выполнение итерации, и управление переда- ется следующей за циклом команде. Например:

Циклы

67

$а = 0;

while ($a < 5) {

if ($arr[$a] == "stop")

break ;

/ * Выполнение цикла прекращается ,

в

массиве

$агг[]

есть

stop

* /

если

$а++;

}

Если встречается оператор continue , то управление передается началу

while

следующего

(list($key,$value )

ближайшего

=

цикла.

Например:

{

each($arr))

if

($key

2)

{

continue;

}

Вот

ка к можно реализовать

вывод при помощи оператора for :

пользователя

списка

чисел

н

а

/*

1

* /

for

($ i =

1;

$ i < = 10 ; $i++)

{

print

$i; }

/*

Пример 2

* /

for

($ i =

l;;$i + + )

экран

{

if

{$i > 10) { break;

} print

$i ; }

/*

Пример 3

* /

$i

=

1; fo r

(;; )

{

if

($ i > 10) { break;

} print

$i ; $i+ + ;

}

68

Знакомьтесь PHP

/*

4

* /

for

($i

=

1;

$i

< =

10;

prin t

$i,

$i++)

;

Вот так по-разному при помощи PH P можно реализовать сход- ные задачи.

Время и дата

В РНР наиболее часто при работе с форматами времени использу-

ется функция date. Ее синтаксис: $date = date ("параметр") ; Параметров может быть несколько, разделяются они между собой запятой. Допустимы следующие параметры:

 

— может принимать значения "am" 1 или "рт";

A

— "AM" или "РМ";

d

— день месяца, цифровой, две цифры (на первом месте при не-

обходимости ноль), т.е.

от 01 до

31;

D

— день недели, текстовой, три буквы, например "Fri" ;

F

— месяц, текстовой, длинный, например

"January";

h

— час, цифровой, 12-часовой формат, две цифры;

— час, цифровой, 24-часовой формат, две цифры;

i

— минуты, цифровой, две цифры, т.е, от "00" д о "59";

j

— день месяца, цифровой, без начальных нулей;

1

(строчная L) — день недели, текстовой, длинный, например

"Friday";

 

L

— указывает, високосный год или нет, т.е.

"0 "

" 1"

;

m

— месяц, цифровой, т.е. от "01 "до

"12";

— месяц, текстовой, три буквы, например "Jan";

 
 

МРГЯТТ ттифрпипй одна цифра, т.е. от " 1 " до "12";

 

От англ. AM (Ante Meridiem) — до полудня, РМ (Post Meridiem) — после ня. (Примеч.ред.)

полуд-

Время идата

69

 

— разница со временем по Гринвичу, в часах, например " +0200";

s

— секунды, цифровой, две цифры, т.е. от "О" до

"59";

s

— английский порядковый суффикс, текстовой, два

символа,

например "th "

, "nd";

t — количество дней в данном месяце, т.е. от "28" до "31" ;

U — секунды

Y — год, цифровой, четыре цифры;

века Unix, т.е.

с

1 января

1970 года;

с начала

w

— день недели, цифровой, "О" означает воскресенье;

Y

— год, четыре цифры, например "1999";

— год, цифровой, две цифры, например "99";

z

— день года, цифровой, например "299".

ВНИМАНИЕ

Некоторые параметры имеют различныезначения при разном регистре, например d и D.

Теперь вы легко можете получить информацию о текущем време- ее

ненных вариантов — вывод текущего времени и даты. Конечно, все это выполняется и при помощи JavaScript, но видевшие эти

в размере выполнения, не говоря уже о трафике от сервера к браузеру).

скрипты поймут разницу

ни и использовать

на своем

сайте.

Один из самых распростра-

(по крайней мере,

и скорости

Время, на мой взгляд, выводить достаточно бесполезно, так как оно есть у каждого пользователя на системной панели Windows,

а вот вывести число, день недели

ке) бывает полезно. Например, можно поприветствовать посети-

телей соответствующей фразой в зависимости от времени суток:

(да еще

и месяц

на русском язы -

<?php

Sh

= date("H")

;

if

(Sh

>=

5

&&

Sh

<=

11)

ech o

"Доброе

утро!" ;

Имеются в виду суффиксы порядковых числительных в английском языке, на- пример second (второй), seventh (седьмой). (Примеч.ред.)

7 0

Знакомьтесь

— PHP

i f

($h

>=

12

&& $h

<=

18)

ech o

"Здравствуйте ! "

;

i

f

($h

>=

19

&&

$h

<= 24)

ech o

"Добрый

вечер!"

;

i f

($h

>=

1

&& $h

<=

4)

ech o

"Доброй ночи!" ;

?>

Цифры желаемого времени можно указать любые, в зависимости отличного понятия дня и ночи :-)

В этом

сервере при помощи команды date("H") , затем проводим его

и значение, выводим посетителю.

Обратите внимание, что в данном примере используется именно время сервера, без учета часовых поясов и соответствующего смещения времени. Другими словами, это не обязательно будет время, правильное для посетителя, так как он может жить доста- точно далеко от часового пояса сервера. Аналогичная проблема возникает в случае, если сервер расположен за рубежом, и, ко- нечно, время на удаленном сервере точно не будет совпадать с необходимым для правильной работы сайта. В этом случае сме- щение необходимо учитывать и закладывать в программы зара- нее. Это можно сделать таким способом:

анализ,

ченное

скрипте сначала

получаем

текущее

значение часов на

полу-

экран

в зависимости от того,

в каких пределах лежит на

фразу

соответствующую

$time

= date("H:i") ;

$timel

=

date("H") ;

$time2

=

date("i") ;

$time_s

=

7;

$timel

=

$timel

+

$time_s;

if

($timel

> =

24)

{ $time l

=

$time l

24;

}

$time

=

"$timel:$time2";