Оглавление



Введение 1
Что делать, если вы не знаете PHP 3

ЧАСТЬ I. АНАЛИЗ И ОПТИМИЗАЦИЯ КОДА 5
Глава 1. Стиль кодирования 7
1.1. Правила "хорошего тона" 7
1.2. Обрамление PHP-кода 9
1.3. Строки 9
1.4. Правила работы с массивами 10
1.5. Управляющие структуры 11
1.5.1. Конструкция if-else (условный оператор) 11
1.5.2. Циклы 13
1.5.3. Конструкция switch-case 14
1.6. Функции 15
1.7. Комментарии 16
Глава 2. Оптимизация PHP-кода 18
2.1. Правильное использование echo 18
2.2. Длина переменных 19
2.3. Правильное обращение к элементам массива 20
2.4. Циклы 20
2.5. Чтение файлов 21
2.6. Вывод текста: echo против printf 24
2.7. "Лишние" вызовы функций 26
2.8. Контрольные замеры 27
2.8.1. Чтение файла 28
2.8.2. Вывод содержимого файла 29
2.9. Выводы 30
Глава 3. Тестирование PHP-сценариев 32
3.1. Программа работает, но не так, как нам нужно 32
3.2. "Самодельные" точки останова 33
3.3. Система автоматического тестирования 34
3.4. Директива error_reporting 38

ЧАСТЬ II. БЕЗОПАСНОЕ ПРОГРАММИРОВАНИЕ НА PHP 41
Глава 4. Директива register_globals 43
4.1. Почему опасно использовать register_globals 43
4.2. Что делать, если register_globals отключена 47
Глава 5. Безопасность веб-приложений 50
5.1. Сайт в опасности 50
5.2. Два самых распространенных метода взлома 51
5.3. Межсайтовый скриптинг 52
5.4. SQL-инъекции 53
5.5. Флуд 58
Глава 6. Аутентификация на PHP. Сессии 60
6.1. Для чего нужны сессии 60
6.2. Как работает механизм сессий 61
6.3. Обход Cookies 63
6.4. Сценарий аутентификации 63
Глава 7. Система защиты от автоматических регистраций 69
7.1. Необходимость защиты 69
7.2. Алгоритм работы системы защиты 69
7.3. Реализация системы 70
7.4. Усовершенствование системы 73

ЧАСТЬ III. РАБОТА С БАЗОЙ ДАННЫХ 75
Глава 8. Основы SQL 77
8.1. Немного истории 77
8.2. Преимущества SQL 78
8.3. Как выглядят запросы 79
8.4. Что такое база данных 79
8.5. Создание таблиц 81
8.6. Добавление записей в таблицу 85
8.7. Обновление записей 85
8.8. Выборка записей 87
8.9. Удаление записей 88
8.10. Встроенные функции 88
8.11. Группировка записей. Сложные запросы 89
Глава 9. Серверы баз данных MySQL и SQLite 93
9.1. MySQL vs SQLite: что лучше 93
9.2. Функции для работы с MySQL 95
9.2.1. Подключение к серверу MySQL 95
9.2.2. Несколько MySQL-соединений 97
9.2.3. Передача запросов серверу 98
9.2.4. Работа с базой данных 102
9.3. Функции для работы с SQLite 103
9.3.1. Открытие базы данных 103
9.3.2. Передача запросов 104
9.3.3. Работа с результатом запроса 104
9.3.4. Список PHP-функций для работы с SQLite 105
Глава 10. Полезные приемы при работе с базой данных 108
10.1. Выбор кодировки 108
10.2. Сортировка: вывод новинок 109
10.3. Постраничный вывод таблицы 109

ЧАСТЬ IV. ФОРУМЫ И CMS, НАПИСАННЫЕ НА PHP 115
Глава 11. Форум phpBB 117
11.1. Самый популярный форум 117
11.2. Установка форума 118
11.3. Установка языковых пакетов 119
11.4. Панель администрирования форумом 119
11.4.1. Вход в панель 119
11.4.2. Управление форумами 120
11.4.3. Общие настройки форума 125
11.4.4. Настройка внешнего вида форума 127
11.4.6. Чистка форумов 129
11.4.7. Управление пользователями 130
11.4.7.1. "Черные" списки 130
11.4.7.2. Запрещенные имена 132
11.4.7.3. Активация, присвоение званий и удаление пользователей 132
11.4.7.4. Права модератора 134
11.4.8. Массовая рассылка сообщений 135
11.4.9. Ограничение доступа к форуму 135
11.5. Полезные советы 137
11.5.1. Изменение названий полей 137
11.5.2. Поздравление пользователей форума с Днем рождения 140
11.5.3. Расширение возможностей форума 143
11.5.4. Вывод последних тем форума 145
11.5.5. Сценарий "Кто на сайте" 148
Глава 12. Система управления содержимым сайта PHP-Nuke 151
12.1. Управление содержимым сайта 151
12.2. Установка PHP-Nuke 154
12.3. Блоки 157
12.4. Создание модулей 160
12.4.1. Простой модуль 160
12.4.2. Активизация модуля 164
12.4.3. Работа с базой данных 166
12.5. Некоторые полезные модули для PHP-Nuke 167
Глава 13. Система управления контентом Slaed 172
13.1. Знакомство со Slaed 172
13.2. Установка Slaed 172
13.3. Базовая настройка Slaed 176
13.4. Дополнительные темы оформления 181
13.5. Модули для Slaed 182
13.6. Создание собственного модуля 184

ЧАСТЬ V. ТОНКОСТИ ПРОГРАММИРОВАНИЯ НА РНР 189
Глава 14. Загрузка файлов на сервер 191
14.1. Что нужно знать о загрузке файлов на сервер 191
14.2. Реализация загрузки файла 194
14.3. Загрузка нескольких файлов 196
14.4. Проблемы при загрузке файлов 198
Глава 15. Отправка и прием почты 199
15.1. Отправка почты средствами PHP — функция mail() 199
15.2. Отправка писем с вложениями — класс HtmlMimeMail 201
15.2.1. Отправка сообщения 201
15.2.2. Проблемы при отправке сообщения 205
15.2.3. MIME-типы 206
15.3. Получение писем по протоколу POP3 207
Глава 16. Работа с RSS: получаем новости на сайт 212
16.1. Краткие сведения о RSS 212
16.2. Формат RSS-файла 213
16.3. Написание сценария импорта новостей 215
16.4. Подключение файла import.php к сайту 218
16.5. Создание "граббера" новостей 219
Глава 17. Работа с сетевыми сокетами в PHP 223
17.1. Еще раз о том, что такое сокет 223
17.2. Использование сокетов 224
17.3. Пример использования сокетов 225
17.4. Блокирующий и неблокирующий режимы сокета 228
Глава 18. Использование FTP-функций 229
18.1. Функции для работы с FTP 229
18.2. Примеры использования FTP-функций 233
Глава 19. Мультимедиа в РНР 236
19.1. Библиотека GD 236
19.1.1. Получение информации об изображении 236
19.1.2. Конвертирование графических форматов 240
19.1.3. Вывод текста поверх картинки 242
19.1.4. Прозрачность 245
19.2. Изменение размера изображения 245
19.3. Создание водяных знаков 247
19.4. Расширения для работы с MP3 249
19.4.1. Формат MP3 249
19.4.2. Библиотека PEAR 250
19.4.3. Вывод ID3-тегов 251
19.4.4 Редактирование ID3-тегов 253
19.4.5. Удаление тега 253
Глава 20. Интеграция галереи LiveJournal и вашего сайта 255
20.1. Что такое "Живой" журнал 255
20.2. Интеграция фотогалереи LiveJournal и сайта 256
20.3. Настройка внешнего вида галереи 260
Глава 21. Протокол SOAP и распределенные системы 263
21.1. Что это такое 263
21.2. Представление вызовов и ответов в формате XML 265
21.3. MS SOAP Toolkit 3.0 268
21.4. WSDL-файлы 269
21.4.1. Раздел Schema 269
21.4.2. Раздел Message 273
21.4.3. Раздел PortType 273
21.4.4. Раздел Binding 275
21.4.5. Раздел Service 276
21.5. Класс SoapClient 277
21.5.1. Общие сведения 277
21.5.2. Конструктор __construct() 277
21.5.3. Методы класса SoapClient 278
21.5.3.1. Метод call() 278
21.5.3.2. Метод doRequest() 279
21.5.3.3. Метод getFunctions() 279
21.5.3.4. Метод getLastRequest() 279
21.5.3.5. Метод getLastRequestHeaders() 280
21.5.3.6. Метод getLastResponse() 280
21.5.3.7. Метод getLastResponseHeaders() 280
21.5.3.8. Метод getTypes() 280
21.6. Класс SoapFault 281
21.7. Класс SoapHeader 283
21.8. Класс SoapParam 285
21.9. Класс SoapServer 286
21.9.1. Конструктор класса 286
21.9.2. Методы класса 287
21.9.2.1. Метод addFunction() 287
21.9.2.2. Метод fault() 288
21.9.2.3. Метод getFunctions() 288
21.9.2.4. Метод handle() 289
21.9.2.5. Метод setClass() 290
21.9.2.6. Метод setPersistence() 291
Глава 22. Регулярные выражения 292
22.1. Нужно что-то найти… 292
22.2. Язык регулярных выражений RegEx 293
22.5. Управляющие конструкции 295
22.5.1. Квантификаторы 295
22.5.2. Альтернативный оператор | 296
22.5.3. Скобки 296
22.6. Псевдосимволы 296
22.7. Практическое использование RegEx-функций 297

ЧАСТЬ VI. СЛОЖНЫЕ ПРОЕКТЫ 301
Глава 23. Сложные проекты. Шаблоны 303
23.1. Организация файлов и каталогов проекта 303
23.2. Выносим параметры в отдельный файл 306
23.3. Подключение дополнительных файлов 307
23.3.1. Инструкции include и require 307
23.3.2. Альтернативный способ подключения сценариев 308
23.3.3. Инструкции include_once и require_once 310
23.4. Шаблоны 310
Глава 24. Многоязычность в PHP 315
24.1. Многоязычность как средство увеличения посещаемости 315
24.2. Как реализовать 316
24.2.1. Перевод статической части 316
24.2.2. Перевод страниц сайта 320
Глава 25. Шаблонизатор Smarty 323
25.1. Что такое Smarty 323
25.2. Установка Smarty 324
25.3. Создание setup.php 326
25.4. Разработка шаблонов Smarty 328
25.4.1. Комментарии в шаблонах 328
25.4.2. Переменные в Smarty 328
25.4.3. Файлы конфигурации шаблонов 329
25.4.4. Служебная переменная {$smarty} 331
25.4.5. Модификаторы переменных 332
25.4.6. Стандартные (встроенные) функции Smarty 335
25.4.6.1. Функции {include} и {insert} 335
25.4.6.2.Функция {foreach} 336
25.4.6.3. Функции {if}, {elseif}, {else} 337
25.4.6.4. Функция {capture} 339
25.4.6.5. Функция {php} 339
25.4.6.6. Функция {strip} 339
25.4.7. Пользовательские функции Smarty 340
25.4.7.1. Функция {assign} 340
25.4.7.2. Функция {cycle} 340
25.4.7.3. Функция {fetch} 340
25.4.7.3. Функции {html_checkboxes} и {html_radios} 341
25.4.7.4. Функция {html_image} 342
25.4.7.5. Функция {html_select_date} 342
25.4.7.6. Функция {html_select_time} 344
25.4.7.7. Функция {html_table} 344
25.5. Smarty для программиста 345
25.5.1. Специальные переменные 345
25.5.2. Полезные методы класса Smarty 347

ЧАСТЬ VII. ТЕОРИЯ И ПРАКТИКА ПРОФЕССИОНАЛЬНОГО
РНР-ПРОГРАММИРОВАНИЯ 349
Глава 26. Объектно-ориентированное программирование в PHP 351
26.1. Основы ООП 351
26.2. Классы и объекты 353
26.3. Конструкторы и деструкторы класса 355
26.4. Наследование классов. Полиморфизм. 356
26.5. Возможности РНР 5 357
26.5.1. Область видимости членов класса 357
26.5.2. Абстрактные классы и методы 358
26.5.3. Служебное слово final 359
26.5.4. Клонирование объектов 360
26.5.5. Обработка исключительных ситуаций 361
26.5.6. Константы-члены класса 362
26.5.7. Статические члены класса 362
26.5.8. Оператор instanceof 363
26.5.9. Итераторы 363
Глава 27. Продукты компании Zend 364
27.1. Zend Engine 364
27.2. Zend Platform 364
27.3. Zend Optimizer 367
27.4. Zend Guard 367
27.5. Zend Studio 368
Глава 28. Пишем коммерческий сценарий 370
28.1. Zend Guard: "за" и "против" 370
28.1.1. Установка Zend Guard 371
28.1.2. Быстрая защита сценария 373
28.1.3. Дополнительные возможности защиты 376
28.1.4. Как защищать PHP-приложения 378
28.2. Zend Studio 379
28.2.1. Установка Zend Studio 379
28.2.2. Автодополнение кода 380
28.2.3. Проверка синтаксиса 380
28.2.4. Отладка 381
28.2.5. Меню Tools и Project 382
28.2.6. Файловый менеджер, инспектор кода и средство
для работы с БД 382
28.2.7. Информационные окна ZDE 383
28.2.8. Встроенный FTP-клиент 384
28.2.9. Какую версию покупать: Standard или Professional 385
Заключение 387
Приложение. Описание компакт-диска 389

X
Оглавление
XI
Оглавление