
- •В.С. Романчик
- •Глава 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. Популярные веб-приложения и фреймворки
- •Фреймворки
Указатель ссылки ("Referer")
Каждая транзакция включает ссылочный заголовок (Referer), идентифицирующий документ на сервере, на который указывает текущий URL. Ссылочный заголовок удобен для отслеживания связей между документами и анализа ошибки поиска документа 404.
Ссылочный заголовок может быть легко подделан. Назначение этого заголовка — служить для анализа приходящих гиперссылок на Web-страницы. Программная установка значения поля ссылочного указателя из PHP-программы с последующим запросом документа с заданного Web-сайта (А), позволяет ввести в заблуждение этот сайт и заставить его думать, что ссылка была создана от (В) на (А), даже если такая ссылка не существует.
Предположим, что пользователь Web-сайта следует по приведенной ниже гипер-ссылке:
<А href="http://my.com/my.рhр">Состояние</А>
с Web-страницы, находящейся по URL-адресу: http:/ftuzzyblog.com/about feedster.htm
Пользовательский клиент — Web-браузер — затем отправит на Web-сервер, находящийся на Feedster.com, следующую транзакцию:
GET /my.php HTTP/1.1 Host: my.com
Referer: http://fuzzyblog.com/aboutfeedster.com
При программировании на PHP доступ к значению ссылочного указателя (referer) предоставляет переменная $_SERVER:
$referer = $ SERVER['HTTP REFERER'];
РНР делает получение содержимого от источника HTTP чрезвычайно простым. Стандартный файл, функции file_get_content () или fopen() — вот и все, что необ-ходимо для получения содержимого от URL. Рассмотрим простой пример:
<?php
// Прочитать информацию с url в переменную $contents
$contents = file_get_contents("http://fu22yblog.com/index.php");
?>
Если вы используете библиотеку HttpClient, то можете извлекать содержимое одним из двух способов. Первый подход заключается в применении метода quickGet(). Этот метод, который может быть вызван без необходимости создания объекта клиента. Пример показан ниже:
<?php
SpageContents = HttpClient::quickGet("http://fuzzyblog.com/index.php"); ?>
Однако, как и встроенные функции РНР. метод quickGet () не предоставляет доступа к кодам состояния HTTP, как не дает доступа и к пользовательскому агенту. По этой причине quickGet () не имеет никаких существенных преимуществ перед встроенными функциями РНР. Чтобы использовать эти более развитые средства, вам нужно создать объект HTTP-клиента, как показано в следующем примере:
<?php
require_once "HttpClient.class.php";
$parts = parse_url ("http://fuzzyblog.com/index.php");
$host = $parts("host"];
$path = $partsl"path"];
$client = new HttpClient(Shost);
if (!$client->get('/')) i
die('Ошибка: '.$client->getError());
$pageContents = $client->getContent();
?>
Предыдущая PHP-программа не специфицирует длины извлекаемого содержимого. Хотя и существуют специальные низкоуровневые опции HTTP для извлечения содержимого заданной длины (или даже в диапазоне байт), в большинстве случаев вы будете запрашивать содержимое одним куском и не беспокоиться о его длине.
Медиа-типы
Когда вы завершаете формирование HTTP-транзакции, запрашивающей содержи-мое, то один из заголовков, принимаемых клиентской программой, сообщает тип полученных данных. Этот заголовок, известный как описатель медиа-типа Internet, позволяет программному обеспечению, принимающему данные, принимать решение относительно того, как их следует обрабатывать. Предположим, например, что вы запросили URL, представляющий аудио-файл. Вообще говоря, браузер сам по себе не знает, как исполнять произвольный поток байт, который он получает, но, заглянув в принятый заголовок, он может определить, какое приложение следует вызвать для проигрывания аудио-файла.
Стандарт HTTP базируется на Internet Media Types, которые похожи на MIME-типы- стандарты Internet для идентификации различных типов медиа.
Когда происходит HTTP-транзакция, то клиент (браузер) в заголовке Accept сообщает серверу, какие он понимает медиа-типы. Затем сервер пытается отправить информацию одного из медиа-типов, поддерживаемых клиентом. Эта информация передается с использованием заголовка Content-header.
Когда происходит HTTP-транзакция без заголовка Accept, сервер предполагает, что клиент поддерживает все типы медиа. Существует три главные формы заголовка Accept:
Accept: * / * -Клиент принимает все медиа-типы.
Accept: тип/* -Клиент принимает класс медиа-типов. Например: image/*
означает, что тип графического образа не важен.
Accept: тип/подтип - Принимается только данный класс и тип. Например:
image/png означает, что принимаются только файлы рng.
Если клиент принимает множество типов документов, то он указывает это в един-ственном предложении Accept: и использует запятые для разделения их. Например: Accept: image/jpg, image/png, image/gif
Помимо использования заголовка Content-type с методом GET, клиент может также применять заголовок Content-type с методом POST или PUT. Это позволяет специ-фицировать формат данных, передаваемых в операции POST или PUT.