Поиск

PHP

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

Одним из примеров нового направления информационных технологий может служить бурное развитие программ с открытым кодом (OSS - Open Source Software), свободно доступных как для распространения-, так и для модификации всеми желающими. Наиболее известной в этом смысле является операционная система Unix, в частности ядро Linux. Однако, хотя с помощью программ с открытыми исходниками создаются стабильные и очень полезные продукты,
освоить их порой затруднительно. Отсутствие учебников для начинающих и удобных описаний не позволяет мощным технологиям стать настолько попу-
лярными, насколько они того заслуживают. РНР, весьма доступный язык написания сценариев для Web, представляет собой еще один прекрасный ин-
струмент, который, хоть и обладает уникальными возможностями и легок в использовании, отпугивал многих до сегодняшнего дня.

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

Что такое РНР

Изначально аббревиатура РНР расшифровывалась как Personal Homft Page (личная домашняя страничка). Этот язык был создан в 1994 году Расмусом Лердорфом (Rasmus Lerdorf), чтобы отслеживать пользователей, просматривавших его домашнюю страничку с резюме. Позже, когда функциональность РНР значительно расширилась и профессионалы начали использовать этот язык для^ создания сложных сайтов, сокращение стали расшифровывать как «гипертекстовый препроцессор» (РНР: Hypertext Preprocessor), Определение означает, что данные в этом языке обрабатываются до того, как становятся HTMLстраницей (HTML язык гипертекстовой разметки).

Согласно официальному сайт)' РНР (www.php.net.), РНР является серверным межплатформенным встроенным в HTML языком написания сценариев. Это может показаться довольно сложным определением, но оно станет простым и понятным, если рассмотреть его по частям.

Вопервых, слово «серверный» означает, что операции РНР выполняются на стороне сервера (в противоположность клиенту, компьютеру пользователя, с которого последний просматривает Webсайт). Сервер это специальный компьютер. На нем хранятся страницы, которые вы видите, когда заходите по указанному в браузере адресу, например Navigator или Internet Explorer. Этот процесс будет описан подробнее чуть позже.

Определение «межплатформенный» означает, что язык РНР может использоваться под Unix, Windows NT, Macintosh, OS/2 и другими серверными, но не клиентскими операционными системами. При этом вы можете переносить свою работу на другую платформу почти или вообще без изменений. Разумеется, PHPсценарии также можно разрабатывать в любой операционной системе, как и в случае HTMLстраниц. Словосочетание «встроенный в HTML» означает, что РНР может быть внедрен в код HTML, с помощью которого строятся все Webстраницы. Поэтому реальное программирование на РНР может быть лишь немного сложнее, чем создание кода вручную на HTML.

Наконец, РНР является языком написания сценариев, а это свойство немногих языков программирования. Значит, операции в языке начинают выполняться только после того, как событие произошло, например когда пользователь передает форму или обращается на URL (Uniform Resource Locator технический термин, означающий Webадрес). Языки программирования, такие как Java, С или Perl, можно использовать для написания автономных приложений, которые могут не иметь никакого отношения к Internet. Наиболее известный пример языка написания сценариев JavaScript. На этом языке можно обрабатывать события, происходящие в Webбраузере. В этом смысле JavaScript похож на РНР, хотя и выполняется исключительно на стороне клиента. Другими способами определения типа языка могут служить термины «интерпретируемый» и «транслируемый». Так, РНР и JavaScript не работают без программыинтерпретатора, примеры транслируемых языков программирования С и Java.

В настоящее время разработана четвертая версия РНР, но, так как она появилась недавно, на многих серверах попрежнему используется версия 3.x. Данная книга посвящена именно РНР 4.0, хотя, если говорить о программировании в широком смысле слова, различия между двумя версиями незначительны. Основное преимущество новой разработки ее улучшенная производительность. Дополнительную информацию по РНР 4.0 можно найти на сайте разработчиков этой версии по адресу www.zend.com (рис. 2).

Преимущества PHP

Попросту говоря, РНР быстрее, лучше и проще, чем другие языки. При разра ботке Webсайтов основными альтернативами РНР являются: базовый HTML, CGIсценарии (Common Gateway Interface, обычно (но не обязательно) написан ные на языке Perl), ASP (Active Server Pages) и JSP (Java Server Pages). Язык JavaScript не является альтернативой РНР, поскольку это клиентская техноло гия, которая не может быть использована для создания HTMLстраниц таким же образом, как собственно РНР или CGI. ^

Преимущество РНР перед базовым HTML состоит в том, что последний представляет собой систему с ограниченными возможностями, не обладающую гибкостью или динамичностью. Посетители сайтов видят обычные статичес кие HTMLстраницы, без каких либо персональных настроек. С помощью же РНР можно создавать привлекательные оригинальные Webстраницы на осно ве любых задаваемых вами критериев (например, времени суток или операци онной системы пользователя). В отличие от HTML язык РНР также может вза имодействовать с базами данных и файлами, с его помощью обрабатывается электронная почта и выполняются многие другие операции. Webмастера давно поняли, что невозможно создать действительно привле кательные и универсальные Webсайты только с помощью HTML. Поэтому сер верные технологии, такие как CGIсценарии, получили широкую популярность. Подобные системы позволяют дизайнерам создавать динамично генерируемые Webприложения, где во внимание принимаются любые мелочи, которые захо телось учесть программисту. При настроенном взаимодействии с базой данных наиболее продвинутые Webсайты позволяют обновлять и сопровождать стра ницы быстрее и легче, чем это возможно с базовым HTML. Очевидно, что вопрос нужно ставить таким образом: почему Webдизай нер должен использовать язык РНР вместо CGI, ASP или JSP для создания динамического Webсайта? Вопервых, программировать на РНР проще и бы ' стрее, чем на CGI, к тому же и написанные сценарии выполняются с более высокой скоростью. Я не буду подробно описывать детали запуска программ на сервере и тем более открывать дискуссию на эту тему. Достаточно упомянуть тот факт, что освоить и использовать РНР намного легче, чем универсальные языки про граммирования. Любой человек, в том числе не получивший специальной под готовки по программированию, сможет легко писать сценарии РНР после про чтения данной книги. Сравните: ASP и CGI являются достаточно полными языками и, следовательно, более сложны в усвоении, при этом первый требует понимания VBScript, a CGI Perl (или С).

Вовторых, в отличие от Perl, VBScript и Java язык РНР был разработан специ ально для создания динамических Webстраниц, что подразумевает выполнение им именно этих задач быстрее и легче, чем альтернативными языками. Хочу, од нако, подчеркнуть, что, хотя для определенных целей РНР подходит лучше, чем

CGI или ASP, он не является оптимальным языком программирования. Напри мер, на РНР удается делать не все, что возможно на языках Java или Perl. На РНР можно взглянуть и с другой стороны как на необходимое и есте ственное расширение возможностей языка разметки HTML. Необычайная по пулярность последнего и взрыв интереса к Internet показали ограниченность возможностей этого языка. Несколько дополнений к стандарту HTML повысили изобразительные возможности языка, добавили способность выполнять про граммы на JavaScript в браузере. Но без РНР HTML так и не стал полноценным языком программирования. В нем нет знакомых любому разработчику операто ров организации циклов, условных переходов, функций, структур данных и про чего. Одинаково правильны оба утверждения: у язык РНР встроены все синтак сические конструкции HTML; у HTML, при подключении на сервере модуля РНР, появляются возможности настоящего языка программирования. РНР уже используется на более чем трех миллионах Webсайтов, и его попу лярность продолжает расти, а это ли не последний аргумент в пользу изучения данного языка?

От скрипта до изображения на экране РНР серверный язык. Это значит, что написанный вами код постоянно нахо дится на стороне сервера, который посылает Webстраницы в браузер. Когда пользователь собирается зайти на Webсайт, например по адресу www.DMCinsights.com. провайдер направляет этот запрос на сервер, на котором хранится информация.

На сервере код РНР читается и выполняется в соответствии с прописан ными в нем командами. В нашем примере сервер должен отправить соответ ствующие командам Webстраницы в браузер посетителя в виде HTML (рис. 3). Образно говоря, РНР создает HTMLстраницу «на лету», как это запрограм мировано в сценарии, и в этом случае на сервере вообще нет статических HTMLстраниц.

На сайте со статичными HTMLстраницами все происходит подругому. На запрос клиента сервер посылает в Webбраузер только данные HTML, при этом на серверной стороне не происходит никакой интерпретации данных (рис. 4). Следовательно, для браузера конечного пользователя может не существовать никакой разницы между тем, как выглядят страницы home.html и home.php, но путь, по которому пришел ответ, различен. С помощью РНР вы можете «за ставить» сервер динамически генерировать HTMLкод. Различная информа ция может быть представлена пользователю при посещении сайта в понедель ник и во вторник, при первом и последующем обращениях к этому ресурсу. Создание динамических Webстраниц вот что отличает менее привлекатель ные статические сайты от более интересных и, следовательно, более посеща емых ресурсов.

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

Платформа для Webприложений
Поскольку РНР является .серверным языком написания сценариев, то самое первое требование для программирования наличие доступа к серверу, позво ляющему работать с РНР. Принимая во внимание популярность РНР, вполне вероятно, что ваш провайдер (ISP Internet Service Provider), предоставляющий Webхостинг, имеет эту опцию на своих серверах. На всякий случай свяжитесь с представителями фирмыпровайдера и узнайте, какие технологии они поддер живают. На момент написания книги язык РНР поддерживали более тысячи поставщиков Webхостинга .

Другой вариант установить РНР на свой собственный компьютер (обыч но это компьютер, который работает под управлением операционных систем Windows NT или Linux), на котором также должен быть установлен Webсер вер. Можно использовать доступный Apache для операционных систем Unix и NT или Personal Web Sharing для Windows. Краткая информация по установ ке РНР содержится в приложении А, «Установка и конфигурация». Если вы со бираетесь использовать свой собственный сервер, РНР можно бесплатно за грузить с сайта www.php.net. Установка не вызовет затруднений.

Второе требование для работы с РНР наличие на вашем компьютере любого текстового редактора. Программ NotePad, WordPad, SimpleText и подобных им будет вполне достаточно, хотя BBEdit, WordPerfect, Word и другие коммерческие приложения предоставляют большую функциональность. Если вы привыкли ра ботать в редакторе, в котором используется графический интерфейс (WYSIWYG

What You See Is What You Get) типа Dreamweaver или GoLive, посмотрите в руко водстве этих приложений, как сохранять свои скрипты в чистом текстовом виде.

Втретьих, вам нужен способ передачи написанных сценариев с вашего ком пьютера на сервер. Если вы работаете на собственном сервере, вы просто со храняете файлы в определенном каталоге. В противном случае потребуется FTPклиент (File Transfer Protocol) для пересылки файлов на сервер. Другой вариант использовать сессию Telnet на удаленном сервере и с помощью ре дакторов типа Vi или Pico писать сценарии прямо на сервере.

Данная книга подразумевает наличие у читателя знания основ HTML. Чем лучше вы знаете, как работать с исходным кодом HTML без помощи таких при ложений, как Dreamweaver, GoLive, FrontPage или PageMill, тем легче вам будет освоить язык РНР. Во время изучения РНР каждый программист независимо от своих знаний заглянет в руководство по HTML, Поэтому всегда держите под рукой хорошую книгу по данной теме. Одна из них «HTML для Всемирной паутины» написана Элизабет Кастро (Elizabeth Castro) и выпущена издатель ством Peachpit Press.

При изучении РНР опыт программирования не требуется. Однако, если вы его имеете, это может ускорить усвоение материала, так как вы обнаружите зна чительное сходство между такими языками, как Perl и РНР или JavaScript и РНР.

Первые шаги с РНР
Основы синтаксиса
Передача данных в браузер
Тестирование сценария
Передача простого текста в браузер
Передача страницы HTML в браузер
Использование пробельных символов в РНР и HTML
Добавление комментариев в сценарий
Переменные
Что такое переменная
Синтаксис переменных
Типы переменных
Присвоение значений переменным
HTML-формы и PHP
Создание простой формы
Использование методов Get и Post
Получение данных из формы в РНР
Ввод данных вручную
Использование чисел
Сложение, вычитание, умножение и деление
Форматирование чисел
Инкремент и декремент
Совместное использование различных операторов
Использование встроенных математических функций
Использование строк
Удаление концевых пробелов
Соединение строк (сцепление, конкатенация)
Кодирование и декодирование строк
Шифрование и дешифрование строк
Извлечение части строки
Управляющие структуры
Условный оператор if
Другие операторы
Логические операторы
Использование оператора if-else
Использование конструкции if-elseif
Условная конструкция switch
Цикл while
Цикл for
Массивы
Создание массива
Добавление элементов в массив
Доступ к элементам массива
Сортировка массивов
Преобразование строк и массивов
Создание массива в экранной форме
Создание многомерных массивов
Регулярные выражения
Что такое регулярные выражения
Создание простого шаблона
Сопоставление с шаблонами
Создание более сложных шаблонов
Сопоставление с шаблоном и его замена
Создание функций
Создание и использование простых функций
Создание и вызов функций, принимающих аргументы
Создание и использование функций, возвращающих значение
Переменные и функции
Файлы и каталоги
Права доступа к файлам
Запись данных в файл
Чтение файла
Каталоги
Загрузка файла на удаленный компьютер
Переименование и удаление файлов и каталогов
Базы данных
Соединение с сервером и создание базы данных
Создание таблицы
Отправка данных
Извлечение данных
Использование cookie
Создание и чтение cookie
Добавление параметров в cookie
Удаление cookie
Создание Web-приложений
Использование функций include и require
Определение даты и времени
Использование HTTP-заголовков
Отправка электронной почты
Отладка сценариев
Распространенные ошибки
Сообщения о возможных ошибках и их протоколирование
Отслеживание ошибок
Использование инструкции die
Приложение А Установка и конфигурация
Установка на сервер Linux
Установка на сервер Windows
Конфигурация
Приложение Б Безопасность
Криптография и SSL
Написание безопасного РНР-кода
Ресурсы по вопросам безопасности
Приложение C. Ресурсы PHP
Руководство по РНР
Web-сайты и сетевые конференции
Ресурсы по базам данных
Сложные темы
Таблицы