PHP 2010
В электронном виде
- PHP Manual
- Руководство по PHP (устарело, не поддерживается, содержит ошибки, старайтесь пользоваться английской версией)
- Стандарт кодирования PEAR
- XHTML™ 1.0 The Extensible HyperText Markup Language (Second Edition)
Лекции
16.02.2010 (В. А. Пономарев)
- "Язык с фигурными скобками" (Си)
- "Язык с долларами" (Bourne shell, Perl)
- Запускать можно из командной строки или из Apache
- Web-сервер как система массового обслуживания: если среднее время обработки запроса больше среднего времени между поступлением заявок на обслуживание ("хитов") - появляется очередь к Apache и gateway timeout
- Программа компилируется непосредственно перед выполнением - удобно, но повышает накладные расходы (1000000 "хитов" - 1000000 компиляций)
- Для снижения времени обслуживания применяется кэширование скомпилированных страниц (APC, Xcache, eAccelerator и т.п.)
- Основы синтаксиса
- Типы
2.03.2010 (В. А. Пономарев)
- Переменные
- Константы
- Выражения, операторы
- Управляющие конструкции
- Функции
9.03.2010 (В. А. Пономарев)
- Предопределенные переменные
- HTTP-Аутентификация
- Cookies
- Сессии
- Загрузка одного файла
- Загрузка нескольких файлов
- setfacl -m u:wwwrun:rwx tmp
- Работа с удаленными файлами
16.03.2010 (М. А. Крышень)
- Базовые понятия объектно-ориентированного программирования
- Особенности объектной модели PHP
- ООП в PHP: класс, свойство, метод, объект
- Объекты и ссылки
- Конструктор
- Константы, статические свойства и методы класса
- Сравнение объектов
- Клонирование объектов
23.03.2010 (М. А. Крышень)
- Наследование классов
- Абстрактные классы и интерфейсы
- Области видимости
- Магические методы
- Обработка исключений
30.03.2010 (М. А. Крышень)
- Определение своих классов исключений
- Цепочки исключений
- Пространства имен: мотивация
- Объявление пространств имен
- Глобальное пространство имен
- Разрешение имен (функции, константы, классы)
- Неполные (unqualified), полные (qualified) и абсолютные (fully qualified) имена
- Импортирование имен
- Оператор namespace и константа __NAMESPACE__
6.04.2010 (А. С. Колосов)
- Связь PHP и MySQL в контексте LAMP
- Язык SQL
- Утилита mysql
- Кодировки: клиента, соединения, результата, базы
- Типичный сценарий работы с БД из PHP
13.04.2010 (А. С. Колосов)
- Пример: вывести таблицу с авторами, при нажатии на автора выводится таблица с книгами этого автора
- Пример: форма добавления новой книги к выбранному автору
- Создание баз данных, изменение таблиц
- Остальные функции из MySQL API
- Mysqli
- Обзор модулей для работы с другими СУБД
- При смене СУБД необходимо переписывать весь код для работы с БД
20.04.2010 (А. С. Колосов)
-
Необходимо проверять все данные, приходящие "снаружи" (основная аксиома).
- Пример с вызовом команды cal. Возможность передать любую команду для выполнения через непроверенный параметр
- Функция escapeshellarg() и др.
-
Контроль доступа
- Хранение всех важных файлов за пределами каталога, доступного через web
- Использование файла .htaccess для ограничения доступа к каталогу
- Файлы с расширением php выполняются, файлы с другими расширениями. выводятся. Необходимо именовать все подключаемые файлы с расширением php
- Если для доступа к ресурсу необходима авторизация, то ее нужно производить при каждом обращении к ресурсу, а не только на стартовой странице
-
Подключаемые файлы
- Директива include может подключить любой файл, доступный пользователю, от имени которого запущен Web-сервер.
- Если подключаемый файл содержит php-код, то он будет выполнен
- Пример с подключением php-файла, содержащим код с выполнением команд операционной оболочки. Файл расположен в домашнем каталоге злоумышленника
-
Проверка данных, вставляемых в HTML-код
- Проверка данных, вставляемых в HTML-код
- Необходимость исключения или ограничения HTML-тегов, используемых во входных данных
- Функции htmlspecialchars(), strip_tags() и др
- Cross Site Scripting (XSS)
- SQL Injections
- Безопасность приложения зависит в первую очередь от программиста
- В документации чаще всего описаны проблемы безопасности, связанные с использованием той или иной функции
27.04.2010 (В. М. Димитров)
Шаблон проектирования Model-View-Controller (MVC)
- Что такое шаблоны проектирования?
- Определение MVC
- Пример MVC на классах PHP
Smarty
- Принцип работы
- Установка в ОС GNU/Linux
- MVC в smarty
- Организация файлов
- Пример из Crash Course
- компилируемость шаблонов (чем это хорошо и чем плохо)
4.05.2010 (В. М. Димитров)
Создание шаблонов
- Комментарии в стиле smarty и в стиле HTML
- Переменные (в том числе классы, массивы, ассоциативные массивы)
- Встроенные фукнции и параметры в них (например if, else и пр.)
- Арифметические выражения
- Модификаторы переменных (cat, count_words, default и пр.)
- Пользовательские функции
- Конфигурационные файлы
11.05.2010 (В. М. Димитров)
Smarty с точки зрения программиста:
- Константы, использующиеся в Smarty (SMARTY_DIR, SMARTY_CORE_DIR)
- Основные свойства класса Smarty
- Основные методы класса Smarty
- Отладочная консоль
- Плагины Smarty
- Кэширование в Smarty
18.05.2010 (В. А. Пономарев)
Разные функции из Function Reference
-
Affecting PHP's Behaviour
- APC
- Error Handling
- PHP Options/Info
- Output Control
-
Cryptography Extensions
- OpenSSL
-
Image Processing and Generation
- GD
TODO
-
File System Related Extensions
- Fileinfo
- xattr
-
Human Language and Character Encoding Support
- iconv
- Multibyte String
-
Mail Related Extensions
Задания для лабораторных работ
- Лаб. 1 и 2: Базовый синтаксис и Базовый синтаксис (продолжение)
- Лаб. 3: Отличительные особенности
- Лаб. 4: Классы и объекты, Исключения, Пространства имен
- Лаб. 5: MySQL API
- Лаб. 6 и 7: Smarty и информационная система