
- •В.С. Романчик
- •Глава 2. Использование php.
- •Глава 3.
- •Введение
- •Возможности php.
- •Инструменты для разработки
- •Как php работает
- •Глава 1. Язык php Типы данных
- •Массивы и инициализация массивов
- •Объектно-ориентированное программирование в php Основные понятия ооп
- •Классы и Объекты
- •Конструкторы и деструкторы
- •Наследование классов и интерфейсов
- •Магические методы
- •Обработка ошибок
- •Ошибки php и директива error_reporting
- •Чтение и запись бинарных файлов
- •Работа с каталогами в рнр
- •MySql – сервер: бд1; бд2; бд3; бд4;
- •Язык запросов sql
- •Операция соединения.
- •Команды sql для создания баз данных и таблиц
- •Выборка данных из таблиц бд
- •Работа с MySql (сохранение данных в базе данных).
- •Работа с MySql занесение и получение данных из базы данных
- •Некоторые улучшения в организации работы с данными
- •Передача данных от клиента к серверу и от сервера клиенту
- •Клиентские методы http get, post, head
- •Обработка html-форм и передача переменных в скрипт.
- •Передача значений переменных по методу get
- •Ниже рассмотрен еще один пример передачи данных из клиентской формы на сервер по методу get
- •Передача данных на сервер по методу post
- •Php и обработка различных форм
- •Примеры обработки форм
- •Работа с e-mail
- •Отправка почты на php (Функция mail)
- •Cookies-наборы: сохраненное состояние
- •Сессии (Сеансы) Переменные сеанса
- •Отмена регистрации сеансовых переменных
- •Работа с сеансовыми переменными
- •Постоянные данные, использующие сеансы и cookie-наборы
- •Вывод графических данных с помощью рнр Основной способ создания изображений
- •Получение информации об изображении
- •Функции рисования прямых и кривых линий
- •Заливка изображений
- •Работа с палитрой изображения
- •Удаление и изменение цветов палитры
- •Создание прозрачности в изображениях
- •Рисование с помощью кистей
- •Использование специальных стилей для заливки
- •Использование шрифтов и вывод строк
- •Манипулирование и копирование изображений
- •Создаём графический информер на php
- •Слияние изображений с помощью gd
- •Включения удаленных файлов
- •Различные приложения и полезные скрипты на php
- •Пример. Определение типа и версии браузера
- •Генератор паролей на php
- •Время выполнения скрипта
- •Календарь
- •Загрузка файла от клиента на сервер
- •Работа с ftp на уровне php
- •Сбор статистики на php
- •Проверка ввода емайл
- •Чтение почты через Web-интерфейс
- •Разработка собственных листов рассылки
- •Рассылаем письма
- •Добавляем адреса в список рассылки
- •Редактирование адресов
- •Автоответчик
- •Почтовые функции в рнр
- •Задания для выполнения
- •Приложение 1. Протокол передачи гипертекстов http
- •Клиентские методы и заголовкиHttp
- •Указатель ссылки ("Referer")
- •Медиа-типы
- •Кодирование
- •Безопасность и авторизация
- •Кэширование содержимого http на стороне клиента
- •Http идентификация с php
- •Сжатие данных в протоколе http
- •Модель ajax: между загруженной в браузер страницей и сервером появляется прослойка - уровень ajax, который обеспечивает следующую последовательность выполнения приложения.
- •Класс xmlHttpRequest
- •Методы класса xmlHttpRequest
- •Свойства класса xmlHttpRequest
- •Создание экземпляра объекта xmlHttpRequest
- •Использование dom
- •Проблема с кешированием
- •Информируйте пользователя
- •Нет принципов написания кода
- •Аутентификация средствами php
- •Отделение клиентская части программы от серверной части и шаблоны
- •Использование шаблонов в php
- •Шаблоны подстановки
- •Создаем свои шаблоны в php
- •Теги, атрибуты, значения
- •Структура документа
- •Разрыв строки
- •Предварительное форматирование
- •Комментарии
- •Физическая и логическая разметка документа
- •«Физические» теги:
- •«Логические» теги:
- •Специальные символы
- •Графика
- •Формы html
- •Метатеги
- •Способы включения каскадных таблиц стилей
- •Синтаксис
- •Группирование
- •Наследование
- •Множественные классы.
- •Селекторы идентификаторов (id-селекторы).
- •Комментарии
- •Свойства шрифтов.
- •Свойства текста.
- •Представление документа в виде специальных областей – блоков
- •Отступы, поля, позиционирование.
- •Границы элементов.
- •Визуальные эффекты
- •Свойства списков
- •Свойства таблиц
- •Псевдоклассы
- •Псевдостили текста
- •Псевдоэлементы
- •Различные свойства
- •Css. Примеры
- •Типы данных
- •Ассоциированные массивы
- •Операторы
- •Подпрограммы
- •Приложение 11. Популярные веб-приложения и фреймворки
- •Фреймворки
Удаление и изменение цветов палитры
Для удаления цветов из палитры можно воспользоваться функцией imagecolordeallocate ():
imagecolordeallocate($img, $color);
Параметр $color задает цвет в палитре, который должен быть удален. После того как цвет будет удален из палитры, позиция, будет использована для хранения другого цвета, назначаемого с помощью функции imagecolorallocate().
<?php //imagepr13
define("WIDTH", 300); define("HEIGHT", 300);
$img = imagecreate(WIDTH, HEIGHT);
$backg= $white = imagecolorallocate($img,0xff, 0xff,0xff);
$black = imagecolorallocate($img, 0, 0, 0);
$red = imagecolorallocate($img, 0xFF, 0, 0);
$blue = imagecolorallocate($img, 0, 0, 0xFF);
imagefilledrectangle($img, 0, 0, WIDTH-1, HEIGHT-1, $black);
imagefilledrectangle($img, 40,40, WIDTH-1, HEIGHT-1, $red);
imagefilledrectangle($img, 80, 80, WIDTH-1, HEIGHT-1, $blue);
imagecolordeallocate($img, $black);
$green = imagecolorallocate($img, 0, 0xff, 0);
// Get the color index for the background
$bg = imagecolorat($img, 0, 0);
// Set the backgrund to be blue
imagecolorset($img, $bg, 200,200, 255);
// Output the image to the browser
header("Content-Type: image/png");
imagepng($img);
imagedestroy($img);
?>
Расширение GD позволяет напрямую заменять определенный индекс в палитре другим цветом с помощью функции imagecolorset():
imagecolorset($img, $color, $red, $green, $blue);
Параметры $red, $green и $blue — тройка значений RGB для замены цвета $color.
Создание прозрачности в изображениях
В PHP не поддерживаются прозрачные изображения в формате GIF, но формат PNG позволяет использовать прозрачные цвета. Для этого необходимо объявить распределенный на палитру цвет "прозрачным" с помощью функции imagecolortransparent():
imagecolortransparent($img [, $color])
Необязательный параметр $color задает цвет, который будет объявлен прозрачным. После того как цвет будет объявлен прозрачным, он не будет отображаться, что позволит видеть все, что находится под изображением (фон). В результате выполнения эта функция возвращает либо прозрачный цвет в палитре, либо, если параметр $color не был задан, текущий прозрачный цвет.
Для данного изображения можно определить только один прозрачный цвет. Поэтому при повторном вызове функции imagecolortransparent () прозрачный цвет будет превращен в реальный цвет.
<?php //imagepr14
// Create a 150x30 image
$img = imagecreatetruecolor(150, 30);
$red = imagecolorallocate($img, 255, 0, 0);
$black = imagecolorallocate($img, 0, 0, 0);
// Make the background transparent
imagecolortransparent($img, $black);
// Draw a red rectangle
imagefilledrectangle($img, 4, 4, 150, 25, $red);
header("Content-Type: image/png");
imagepng($img);
// Save the image
imagepng($img, './imagecolortransparent.png');
imagedestroy($img);
?>
Кроме рассмотренной функции возможно создание прозрачности с помощью альфа-смешивания цветов RGBA. Аббревиатура "RGBA" (Red, Green, Blue, Alpha) задает способ определения "прозрачных" цветов на основе тройки значений RGB. Цвета связаны посредством "альфа-уровня" , который лежит в диапазоне от 0 до 127 (от 0x0 до 0x7F), и соответствует степени прозрачности этого цвета при его помещении на холст.
Основой системы цветов RGBA является то, что когда цвет распределяется с помощью метода RGBA и помещается на холст, то цвет, который находится под закрашиваемой областью, не будет полностью удален. Наоборот, этот цвет будет комбинироваться со значением RGB помещаемого цвета для получения итогового цвета, отображаемого на холсте. Изображение должно содержать натуральные цвета, созданые с помощью РНР-функции imagecreatetruecolor ().
Для создания цвета RGBA используется функция:
imagecolorallocatealpha($img_r, $red, $green, $blue, $alpha);
Параметр $alpha может принимать значение от 0 (непрозрачный цвет) до 127 ( прозрачный цвет). Использование функции imagecolorallocatealpha ()
<?php //imagepr15
define("WIDTH", 300); define("HEIGHT", 300);
$img = imagecreatetruecolor(WIDTH, HEIGHT);
$white = imagecolorallocate($img, 0xFF, 0xFF, 0xFF);
$yellow = imagecolorallocate($img, 0xFF, 0xFF, 0);
$red = imagecolorallocate($img, 0xFF, 0, 0);
$blue_t = imagecolorallocatealpha($img, 0, 0, 0xFF, 0x40);
imagefill ($img, 1, 1, Swhite) ;
imageline($img, 0,0, WIDTH-1, HEIGHT-1, $blue_t);
imagefilledrectangle($img, (WIDTH/2)-50, (HEIGHT/2)-50,
(WIDTH/2)+50, (HEIGHT/2)+50, Syellow);
imagefilledrectangle($img, (WIDTH/2)-30, (HEIGHT/2)-30,
(WIDTH/2)+30, (HEIGHT/2)+30, $red);
imagefilledrectangle($img, 10, 10, WIDTH-11, HEIGHT-11, $blue_t);
header("Content-Type: image/png");
imagepng($img);
?>
Три закрашенных прямоугольника были нарисованы поверх диагональной линии синего цвета. Как можно видеть, даже при том условии, что оба прямоугольника меньшего размера и линия были нарисованы еще до того, как был нарисован большой синий прямоугольник RGBА, видимыми остаются все три прямоугольника. Это объясняется тем, что во время рисования этого прямоугольника альфа-уровень составлял половину прозрачности (0x40 в шестнадцатеричной форме, 64 — в десятичной) и был смешан с цветами, поверх которых был нарисован этот прямоугольник. Благодаря этому и был получен визуальный эффект, при котором "сквозь" большой прямоугольник RGBA просматриваются остальные закрашенные формы, находящиеся за ним.
Помимо функции imagecolorallocatealpha(), расширение GD предлагает следующие функции для работы с цветами RGBA:
imagecolorallocatealpha(Simg_r, Sred, Sgreen, Sblue, Salpha); imagecolorexactalpha($img_r, Sred, Sgreen, Sblue, Salpha); imagecolorclosestalpha(Simg_r, Sred, Sgreen, Sblue, Salpha); imagecolorresolvealpha($img_r, Sred, Sgreen, Sblue, Salpha);