Дельта синхронизация без облака

Ранее мы показывали разные способы синхронизации криптодиска между ПК и Android-устройством.

Смотрим плавность хода с помощью BMW Rheingold

Всем знакома ситуация, когда двигатель немного "троит", но пропусков зажигания нет...

Дельта-синхронизация крипто-дисков

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

Облачный хостинг VDS за 2 минуты

Настоящий облачный VDS-хостинг от UltraVDS: тестируем производительность

PHP 5/6 и MySQL 6. Разработка Web-приложений


Автор: Колисниченко Денис Николаевич

На практических примерах описана разработка Web-приложений на языке PHP версий 5 и 6. Бoльшая часть кода примеров совместима с обеими версиями PHP, но особое внимание уделено новым функциям PHP 6. Даны начала программирования на PHP: установка и настройка PHP и MySQL, выбор редактора PHP-кода, основы синтаксиса и самые полезные функции PHP.

Рассмотрено создание собственного движка сайта и ряда дополнительных модулей - фотогалереи, RSS-граббера, модуля для работы с MP3, модуля автопродажи, гостевой книги, а также применение мощного шаблонизатора Smarty и создание простейшего собственного шаблонизатора. В качестве хранилища данных использованы два сервера - самая современная версия MySQL 6 и "суперлегкий" сервер баз данных SQLite. Описаны две версии самого популярного форума phpBB2 и phpBB3 и способы интеграции с ними создаваемого движка сайта. Показано, как с помощью технологии AJAX добиться обновления данных на странице без ее перезагрузки.

Оглавление

ВВЕДЕНИЕ 1
Немного истории 1
PHP 6 2
MySQL 3
Поддержка читателей 4
Где взять листинги 4

ЧАСТЬ I. БЫСТРЫЙ СТАРТ

5

ГЛАВА 1. УСТАНОВКА НЕОБХОДИМОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

7
1.1. Нужно ли устанавливать программное обеспечение 7
1.2. Выбор PHP-редактора и FTP-клиента 9
1.3. Установка Apache + PHP + MySQL в Windows 12
1.4. Установка Apache + PHP + MySQL в Linux 16
1.5. Несколько советов 17

ГЛАВА 2. ПЕРВАЯ PHP-ПРОГРАММА

18
2.1. Ваша первая программа 18
2.2. Запуск PHP-программы 19
2.3. Вывод текста без echo 20

ГЛАВА 3. ОСНОВЫ СИНТАКСИСА PHP

23
3.1. Переменные 23
3.1.1. Правила объявления переменных. Имена переменных 23
3.1.2. Типы данных переменных 24
3.1.3. Булевы переменные 26
3.1.4. Операции над переменными 27
3.1.5. Ссылки 28
3.2. Константы 29
3.3. Выражения и операции 30
3.3.1. Что такое выражение 30
3.3.2. Арифметические операции 31
3.3.3. Логические выражения 31
3.3.4. Приоритеты операций 32
3.3.5. Операторы эквивалентности == и === 33
3.3.6. Операции со строками 34
3.4. Условный оператор 35
3.5. Циклы 36
3.5.1. Цикл со счетчиком 36
3.5.2. Цикл while 37
3.5.3. Цикл do-while 37
3.5.4. Принудительное завершение цикла и пропуск итерации 38
3.6. Оператор выбора switch-case 39

ЧАСТЬ II. ПЕРЕДАЧА ПАРАМЕТРОВ PHP-ПРОГРАММАМ

41

ГЛАВА 4. МЕТОДЫ GET И POST

43
4.1. Интерфейс CGI 43
4.2. Метод GET 45
4.3. Метод POST 46

ГЛАВА 5. ПРОТОКОЛ HTTP И ИНТЕРФЕЙС CGI

47
5.1. Специальные переменные окружения CGI 47
5.2. Заголовки протокола HTTP 48
5.3. Коды ответов протокола HTTP 50

ГЛАВА 6. ПЕРЕДАЧА ПАРАМЕТРОВ ПОСРЕДСТВОМ HTML-ФОРМЫ

51
6.1. Создание простейшей формы и ее обработка в сценарии 51
6.2. Создание пользовательского интерфейса с помощью формы 54
6.2.1. Ввод текста. Теги INPUT и TEXTAREA 56
6.2.2. Зависимые и независимые переключатели 57
6.2.3. Списки выбора 59
6.2.4. Форма для передачи файлов 61
6.2.5. Кнопки 61
6.3. Проверка параметров формы 62
6.3.1. Проверка корректности e-mail 63
6.3.2. Проверка правильности номера кредитной карты 64
6.3.3. Удаление лишних пробелов 66

ГЛАВА 7. ЗАПОМИНАНИЕ ПАРАМЕТРОВ С ПОМОЩЬЮ COOKIES И СЕССИЙ

67
7.1. Что такое Cookies и как с ними работать 67
7.2. Механизм сессий 70
7.2.1. Сессии и Cookies: преимущества и недостатки 70
7.2.2. Для чего нужны сессии 70
7.2.3. Как работает механизм сессий 72
7.2.4. Обход Cookies 74
7.3. Массивы и Cookie 74

ГЛАВА 8. ОТДЕЛЬНОЕ СЛОВО О ДИРЕКТИВЕ REGISTER_GLOBALS

75
8.1. Почему опасно использовать register_globals 75
8.2. Если register_globals отключена 80
8.3. PHP 6 и register_globals 83

ЧАСТЬ III. МАССИВЫ И СПИСКИ

85

ГЛАВА 9. ОСНОВНЫЕ ОПЕРАЦИИ НАД МАССИВАМИ И СПИСКАМИ

87
9.1. Массив и список. Цикл foreach 87
9.2. Функции list() и array() 89
9.3. Удаление массива 90
9.4. Слияние массивов 91
9.5. Функция print_r() 93

ГЛАВА 10. ФУНКЦИИ СОРТИРОВКИ МАССИВОВ

95
10.1. Функции для сортировки массивов 95
10.2. Функция sort() — сортировка списка 95
10.3. Функция asort() — сортировка массива по значениям 96
10.4. Функция ksort() — сортировка по ключам 97
10.5. Функции array_reverse() и shuffle() 98
10.6. Собственная функция сортировки 99

ГЛАВА 11. ОСОБЫЕ ОПЕРАЦИИ НАД МАССИВАМИ

101
11.1. Добавление и удаление элементов массива 101
11.2. Упаковка переменных в массив и их извлечение 103
11.3. Получение части массива 104

ЧАСТЬ IV. ФУНКЦИИ В PHP

105

ГЛАВА 12. ПОЛЕЗНЫЕ СТАНДАРТНЫЕ ФУНКЦИИ

107
12.1. Генератор случайных чисел 107
12.2. Дата и время 108
12.2.1. Кратко о timestamp 108
12.2.2. Функции strtotime() и checkdate() 109
12.2.3. Вывод даты 110
12.3. Математические функции 112

ГЛАВА 13. ФУНКЦИИ ДЛЯ РАБОТЫ СО СТРОКАМИ

114
13.1. Основные строковые функции 114
13.2. Специальные функции замены 116
13.3. Преобразование строки 116
13.4. Функции преобразования кодировок 118
13.5. Функции для работы с отдельными символами строки 119
13.6. Функция md5() 119
13.7. Функция explode(): выделение подстрок 120

ГЛАВА 14. РАБОТАЕМ С ФАЙЛАМИ И КАТАЛОГАМИ

121
14.1. Права доступа в UNIX 121
14.2. Чтение файла 124
14.2.1. Использование функций fopen() и fread() 124
14.2.2. Использование функции file(): построчное чтение файла 127
14.2.3. Чтение всего файла: функция file_get_contents() 129
14.3. Запись файла 129
14.4. Создание временных файлов 130
14.5. Работа с CSV-файлами 130
14.6. Специальные функции для работы с файлами 133
14.6.1. Функции для работы с именами файлов 133
14.6.2. Работа с правами доступа 134
14.6.3. Копирование, переименование и удаление файлов 135
14.6.4. Время доступа к файлу 136
14.6.5. Другие полезные функции 137
14.7. Совместный доступ к файлу 138
14.8. Функции для работы с каталогами 139

ГЛАВА 15. ВЫВОД ГРАФИЧЕСКИХ ИЗОБРАЖЕНИЙ СРЕДСТВАМИ PHP

141
15.1. Библиотека GD 141
15.1.1. Получение информации об изображении 142
15.1.2. Конвертирование графических форматов 145
15.1.3. Вывод текста поверх картинки 148
15.1.4. Прозрачность 151
15.2. Изменение размера изображения 151
15.3. Создание водяных знаков 153

ГЛАВА 16. РАБОТА С СЕТЕВЫМИ СОКЕТАМИ В PHP. СЕТЕВЫЕ ФУНКЦИИ

156
16.1. Еще раз о том, что такое сокет 156
16.2. Использование сокетов 157
16.3. Пример использования сокетов 158
16.4. Блокирующий и неблокирующий режимы сокета 162
16.5. DNS-функции 162

ГЛАВА 17. СОБСТВЕННЫЕ ФУНКЦИИ

164
17.1. Зачем нужны собственные функции 164
17.2. Особенности функций в PHP 165
17.3. Объявление функции 165
17.4. Области видимости функции 166
17.5. Вложенность функций 167
17.6. Переменное число аргументов 169
17.7. Передача массивов в качестве параметров 170

ЧАСТЬ V. СЕРВЕРЫ БАЗ ДАННЫХ MYSQL6 И SQLITE

171

ГЛАВА 18. ОСНОВЫ SQL

173
18.1. Немного истории 173
18.2. Преимущества SQL 174
18.3. Как выглядят запросы 175
18.4. Что такое база данных 175
18.5. Создание таблиц 177
18.6. Добавление записей в таблицу 181
18.7. Обновление записей 182
18.8. Выборка записей 183
18.9. Удаление записей 184
18.10. Встроенные функции 185
18.11. Группировка записей. Сложные запросы 186

ГЛАВА 19. ФУНКЦИИ ДЛЯ РАБОТЫ С MYSQL

190
19.1. Подключение к серверу MySQL 190
19.2. Несколько MySQL-соединений 192
19.3. Передача запросов серверу 193
19.4. Работа с базой данных. Создание базы данных 198
19.5. Функция mysql_real_escape_string($content) 198

ГЛАВА 20. АЛЬТЕРНАТИВНАЯ БАЗА ДАННЫХ SQLITE

200
20.1. MySQL vs SQLite: что лучше 200
20.2. Открытие базы данных 202
20.3. Передача запросов 203
20.4. Работа с результатом запроса 203
20.5. Список PHP-функций для работы с SQLite 205

ГЛАВА 21. ПОЛЕЗНЫЕ ПРИЕМЫ ПРИ РАБОТЕ С MYSQL 6

208
21.1. Выбор кодировки 208
21.2. Сортировка: вывод новинок 209
21.3. Постраничный вывод таблицы 210

ЧАСТЬ VI. ИНСТРУМЕНТЫ ДЛЯ СОЗДАНИЯ СЛОЖНЫХ ПРОЕКТОВ QLITE

215

ГЛАВА 22. РАЗРАБОТКА СОБСТВЕННОГО ШАБЛОНИЗАТОРА

217
22.1. Организация файлов и каталогов проекта 217
22.2. Выносим параметры в отдельный файл 220
22.3. Подключение дополнительных файлов 222
22.3.1. Инструкции include и require 222
22.3.2. Альтернативный способ подключения сценариев 222
22.3.3. Инструкции include_once и require_once 224
22.4. Шаблоны 225

ГЛАВА 23. ШАБЛОНИЗАТОР SMARTY

230
23.1. Что такое Smarty 230
23.2. Установка Smarty 231
23.3. Создание setup.php 234
23.4. Разработка шаблонов Smarty 235
23.4.1. Комментарии в шаблонах 235
23.4.2. Переменные в Smarty 236
23.4.3. Файлы конфигурации шаблонов 237
23.4.4. Служебная переменная {$smarty} 238
23.4.5. Модификаторы переменных 240
23.4.6. Стандартные (встроенные) функции Smarty 243
23.4.7. Пользовательские функции Smarty 249
23.5. Smarty для программиста 255
23.5.1. Специальные переменные 255
23.5.2. Полезные методы класса Smarty 258

ГЛАВА 24. ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ

259
24.1. Основы ООП 259
24.2. Классы и объекты 260
24.3. Конструкторы и деструкторы класса 263
24.4. Наследование классов. Полиморфизм 264
24.5. Новые возможности PHP 6 265
24.5.1. Область видимости членов класса 265
24.5.2. Абстрактные классы и методы 266
24.5.3. Служебное слово final 267
24.5.4. Клонирование объектов 268
24.5.5. Обработка исключительных ситуаций 269
24.5.6. Константы-члены класса 270
24.5.7. Статические члены класса 271
24.5.8. Оператор instanceof 271
24.5.9. Итераторы 272
24.5.10. Пространства имен 272

ГЛАВА 25. МЕХАНИЗМ СЕССИЙ

274
25.1. Для чего нужны сессии 274
25.2. Как работает механизм сессий 276
25.3. Обход Cookies 277
25.4. Сценарий аутентификации 278

ЧАСТЬ VII. РАЗРАБОТКА ОСНОВНЫХ ЭЛЕМЕНТОВ САЙТА

283

ГЛАВА 26. ЗАГРУЗКА ФАЙЛОВ НА СЕРВЕР

285
26.1. Что нужно знать о загрузке файлов на сервер 285
26.2. Реализация загрузки файла 288
26.3. Загрузка нескольких файлов 291
26.4. Проблемы при загрузке файлов 292

ГЛАВА 27. ИСПОЛЬЗОВАНИЕ FTP-ФУНКЦИЙ

293
27.1. Функции для работы с FTP 293
27.2. Примеры использования FTP-функций 297

ГЛАВА 28. ОТПРАВКА И ПРИЕМ ПОЧТЫ

300
28.1. Отправка почты средствами PHP — функция mail() 300
28.2. Отправка писем с вложениями: класс HtmlMimeMail 302
28.2.1. Отправка сообщения 302
28.2.2. Проблемы при отправке сообщения 306
28.2.3. MIME-типы 308
28.3. Получение писем по протоколу POP3 309

ГЛАВА 29. РАБОТА С RSS: ПОЛУЧАЕМ НОВОСТИ НА САЙТ

314
29.1. Краткие сведения о RSS 314
29.2. Формат RSS-файла 315
29.3. Написание сценария импорта новостей 317
29.4. Подключение файла import.php к сайту 321
29.5. Создание граббера новостей 321

ГЛАВА 30. ПОИСК С ИСПОЛЬЗОВАНИЕМ РЕГУЛЯРНЫХ ВЫРАЖЕНИЙ

326
30.1. Нужно что-то найти… 326
30.2. Язык регулярных выражений RegEx 327
30.3. Управляющие конструкции 329
30.3.1. Квантификаторы 329
30.3.2. Альтернативный оператор | 330
30.3.3. Скобки 330
30.4. Псевдосимволы 331
30.5. Практическое использование RegEx-функций 331

ГЛАВА 31. РАБОТАЕМ С MP3

336
31.1. Формат MP3 336
31.2. Библиотека PEAR 337
31.3. Вывод ID3-тегов 338
31.4. Редактирование ID3-тегов 340
31.5. Удаление тега 341

ГЛАВА 32. ТЕХНОЛОГИЯ AJAX

343
32.1. Что такое AJAX 343
32.2. Ваше первое AJAX-приложение 344

ЧАСТЬ VIII. РАЗРАБОТКА ТИПИЧНОГО САЙТА СРЕДНЕЙ СЛОЖНОСТИ

349

ГЛАВА 33. СОЗДАНИЕ ПРОСТЕЙШЕГО ДВИЖКА САЙТА

351
33.1. Планирование движка 351
33.1.1. Зачем нужно разрабатывать собственный движок 351
33.1.2. Необходимые нам функции движка 353
33.1.3. "Принципиальная схема" движка 355
33.2. Основные функции движка 357
33.2.1. Разработка TPL-шаблона 357
33.2.2. Файл настроек 358
33.2.3. Основной файл CMS — index.php 359
33.2.4. Проектирование базы данных 361
33.2.5. Иерархическая структура сайта 365
33.3. Дополнительные функции движка 378
33.3.1. Вывод информации из таблицы static 378
33.3.2. Функция вывода содержимого HTML-файла 380
33.3.3. Версия для печати 381
33.4. Где взять листинги из этой главы 382

ГЛАВА 34. СОЗДАНИЕ ФОТОГАЛЕРЕИ

383
34.1. Постановка задачи 383
34.2. Загрузка изображений на сервер 383
34.3. Вывод галереи 388

ГЛАВА 35. ГОСТЕВАЯ КНИГА

392
35.1. Пережиток прошлого? 392
35.2. Разработка базы данных и структура гостевой книги 393
35.3. Вывод гостевой книги 393
35.4. Добавление записей в гостевую книгу 397
35.5. Сервисный сценарий gb_service.php 401

ГЛАВА 36. ИНТЕГРАЦИЯ ГАЛЕРЕИ LIVEJOURNAL И ВАШЕГО САЙТА

403
36.1. Что такое Живой журнал 403
36.2. Интеграция фотогалереи LiveJournal и сайта 405
36.3. Настройка внешнего вида галереи 409

ГЛАВА 37. СИСТЕМА АВТОПРОДАЖИ

411
37.1. Суть задачи 411
37.2. Проектирование базы данных 413
37.3. Структура системы объявлений 415
37.4. Сценарий sale_form.php: форма добавления объявления 416
37.5. Сценарий sale_add.php: добавление объявления 424
37.6. Вывод объявлений: sales.php 428
37.7. Подробная информация о машине: show_car.php 437
37.8. Домашнее задание 443

ГЛАВА 38. СОЗДАНИЕ СЧЕТЧИКА САЙТА

444
38.1. Постановка задачи 444
38.2. Файл конфигурации 445
38.3. Разработка таблиц counter и ipaddr 445
38.4. Сценарий counter.php 447
38.5. Сценарий reset_counter.php 452

ГЛАВА 39. СТАТИСТИКА САЙТА

453
39.1. Методы сбора статистики 453
39.2. Программы-анализаторы журналов Web-сервера 455
39.3. Системы статистики 457

ГЛАВА 40. ГОЛОСОВАНИЯ (ОПРОСЫ)

460
40.1. Разработка собственной системы голосования 460
40.2. Разработка сценария poll_form.php 462
40.3. Сценарий poll_process.php 464
40.4. Сценарий poll_results.php 466

ЧАСТЬ IX. ИНТЕГРАЦИЯ САЙТА С ФОРУМАМИ PHPBB2 И PHPBB3

471

ГЛАВА 41. УСТАНОВКА ФОРУМА

473
41.1. phpBB — самый популярный 473
41.2. Загрузка форума на сайт. Выбор версии 474
41.2.1. Установка phpBB3 476
41.2.2. Установка phpBB2 484

ГЛАВА 42. НАСТРОЙКА ФОРУМА И ЕГО ИСПОЛЬЗОВАНИЕ

487
42.1. Русификация форума 487
42.2. Настройка форума phpBB3 488
42.2.1. Вход на форум и в панель управления 488
42.2.2. Обзор панели управления форумом 493
42.2.3. Общие параметры форума 495
42.2.4. Управление форумами 502
42.2.5. Управление пользователями и группами пользователей 508
42.2.6. Права доступа 520
42.2.7. Стили и их изменение 520
42.2.8. Обслуживание форума 523
42.2.9. Система 524
42.3. Настройка форума phpBB2 525
42.3.1. Вход в панель 525
42.3.2. Управление форумами 526
42.3.3. Общие настройки форума 530
42.3.4. Настройка внешнего вида форума 533
42.3.5. Чистка форумов 535
42.3.6. Управление пользователями 536
42.3.7. Массовая рассылка сообщений 541
42.3.8. Ограничение доступа к форуму 541

ГЛАВА 43. ИНТЕГРАЦИЯ CMS С ФОРУМОМ PHPBB

545
43.1. Преимущества и недостатки интеграции с форумом 545
43.2. Разработка формы входа 546
43.3. Вывод последних сообщений форума на главной странице 548
43.4. Вывод посетителей онлайн 552
43.5. Изменение названий полей 554

ГЛАВА 44. ИНТЕГРАЦИЯ ПАНЕЛИ УПРАВЛЕНИЯ САЙТОМ

558
44.1. Возможности панели управления 558
44.2. Создание HTML-редактора 559
44.3. Разработка модулей для панели администрирования phpBB 562
44.4. Модуль редактирования таблицы static 565
44.5. Домашнее задание 572
44.6. Бонус: полноценный WYSIWYG-редактор 573

ГЛАВА 45. SSL-СОЕДИНЕНИЯ

578
45.1. Защищаем передаваемые данные 578
45.2. Настройка SSL в DirectAdmin 579
45.3. SSL-переменные 581

ГЛАВА 46. ЗАЩИТА PHP С ПОМОЩЬЮ КОНФИГУРАЦИОННОГО ФАЙЛА

584
46.1. Конфигурационный файл php.ini 584
46.2. Отключение потенциально опасных функций 586
46.3. Рекомендованные значения некоторых конфигурационных директив 586

ГЛАВА 47. ЗАЩИТА САЙТА ОТ АТАК

588
47.1. Сайт в опасности 588
47.2. Два самых распространенных метода взлома 589
47.3. Межсайтовый скриптинг 590
47.4. SQL-инъекции 592
47.5. Флуд 596
ПРИЛОЖЕНИЕ. ПРОГРАММА PHPMYADMIN 599
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ 601
XIV Оглавление XIII Оглавление

Главная страница