
- •В.С. Романчик
- •Глава 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. Популярные веб-приложения и фреймворки
- •Фреймворки
Сбор статистики на php
На основании статистики можно подогнать дизайн сайта к браузерам, на которых приходит большая часть посетителей, выяснить, кто заглядывал на сайт, человек или робот, из под какой OC чаще приходят. Скрипт статистики нужно встроить в каждую страницу, статистику посещений который вы хотите увидеть. Наш скрипт будет записывать следующие данные:
# Браузер + OC (HTTP_USER_AGENT)
# IP адрес (REMOTE_ADDR)
# Хост (REMOTE_HOST)
# Страницу-рефферер (HTTP_REFERER)
# Время визита (date("d.m.Y H:i:s"))
# Запрашиваемый адрес (REQUEST_URI)
Скрипт будет называться sniffer.php.
<?php
//sniffer.php
//защита от непосредственного запуска
//скрипта кем то посторонним
if (eregi("sniffer.php",$PHP_SELF)) {
Header("Location: index.php");
die();
}
extract($HTTP_GET_VARS);
extract($HTTP_POST_VARS);
extract($HTTP_COOKIE_VARS);
extract($HTTP_SERVER_VARS);
//этот фрагмент кода был позаимствован
//из системы PHP Nuke ;)
//далее объявляю переменные
$fileName="stat.txt"; //имя файла со статистикой
$maxVisitors=30; //количество записей, отображаемых
//при просмотре статистики
$cookieName="visitorOfMySite"; //имя куки
$cookieValue="1"; //значение куки
$timeLimit=86400; //срок в секундах, который должен
//пройти с момента последнего посещения сайта, что бы
//информация о посетителе записалась повторно. Это
//значение равно 1 дню, т.е. один и тот же посетитель
//записывается в статистику раз в одни сутки. Если
//эту переменную приравнять к нулю, то будут учитываться
//все посещения одного и того же посетителя
//далее следуют переменные, отвечающие за отображение
//статистики
$headerColor="#808080";
$headerFontColor="#FFFFFF";
$fontFace="Arial, Times New Roman, Verdana";
$fontSize="1";
$tableColor="#000000";
$rowColor="#CECECE";
$fontColor="#0000A0";
$textFontColor="#000000";
//все переменные подготовлены.
//Функция записи данных о посетителе
function saveUserData() {
GLOBAL $fileName, $HTTP_USER_AGENT, $REMOTE_ADDR, $REMOTE_HOST,
$HTTP_REFERER, $REQUES_URI;
$curTime=date("d.m.Y @ H:i:s"); //текущее время и дата
//подготавливаю данные для записи
if (empty($HTTP_USER_AGENT)) {$HTTP_USER_AGENT = "Unkwnown";}
if (empty($REMOTE_ADDR)) {$REMOTE_ADDR = "Not Resolved";}
if (empty($REMOTE_HOST)) {$REMOTE_HOST = "Unknown";}
if (empty($HTTP_REFERER)) {$HTTP_REFERER = "No Referer";}
if (empty($REQUEST_URI)) {$REQUEST_URI = "Unknown";}
$data_ = $HTTP_USER_AGENT."::".$REMOTE_ADDR."::".$REMOTE_HOST."::
".$HTTP_REFERER."::".$REQUEST_URI."::".$curTime."\r\n";
//разделителем будут два ":"
//далее пишу в файл
if (is_writeable($fileName) ) :
$fp = fopen($fileName, "a");
fputs ($fp, $data_);
fclose ($fp);
endif;
}
//функция записи готова. Теперь нужно написать
//функцию вывода данных из файла статистики
function showStat () {
GLOBAL $headerColor, $headerFontColor, $fontFace, $fontSize, $tableColor,
$fileName, $maxVisitors, $rowColor, $fontColor, $textFontColor;
//вывожу таблицу
$fbase=file($fileName);
$fbase = array_reverse($fbase);
$count = sizeOf($fbase);
echo "<font face=\"$fontFace\" color=\"$textFontColor\" size=\"$fontSize\">";
echo "Всего посещений: $count<br><br>";
echo "<div align=\"center\">
<table cellpadding=\"2\" cellspacing=\"1\" width=\"95%\"
border=\"0\" bgcolor=\"$tableColor\">";
echo "<tr bgcolor=\"$headerColor\"><td><
font face=\"$fontFace\" color=\"$headerFontColor\"
size=\"$fontSize\">Браузер
</font>
</td><td><font face=\"$fontFace\" color=\"$headerFontColor\"
size=\"$fontSize\">IP</font></td>
<td><font face=\"$fontFace\" color=\"$headerFontColor\"
size=\"$fontSize\">Хост</font></td>
<td><font face=\"$fontFace\" color=\"$headerFontColor\"
size=\"$fontSize\">Ссылка</font></td>
<td><font face=\"$fontFace\" color=\"$headerFontColor\"
size=\"$fontSize\">Страница</font></td>
<td><font face=\"$fontFace\" color=\"$headerFontColor\"
size=\"$fontSize\">Время визита</font></td></tr>";
echo "</font><font face=\"$fontFace\" size=\"$fontSize\">";
//открываю файл и запускаю цикл
$fbase=file($fileName);
$fbase = array_reverse($fbase);
for ($i=0; $i<$maxVisitors; $i++) :
if ($i>= sizeof($fbase)) {break;}
$s = $fbase[$i];
//разделяю
$strr = explode("::", $s);
if (empty($strr)) {break;}
//вывожу данные
echo "<tr><td bgcolor=\"$rowColor\"><
font face=\"$fontFace\" color=\"$fontColor\"
size=\"$fontSize\">$strr[0]</font>
</td><td bgcolor=\"$rowColor\"><
font face=\"$fontFace\" color=\"$fontColor\"
size=\"$fontSize\">$strr[1]</font>
</td><td bgcolor=\"$rowColor\"><
font face=\"$fontFace\" color=\"$fontColor\"
size=\"$fontSize\">$strr[2]</font>
</td><td bgcolor=\"$rowColor\"><
font face=\"$fontFace\" color=\"$fontColor\"
size=\"$fontSize\">$strr[3]</font>
</td><td bgcolor=\"$rowColor\"><
font face=\"$fontFace\" color=\"$fontColor\"
size=\"$fontSize\">$strr[4]</font>
</td><td bgcolor=\"$rowColor\"><
font face=\"$fontFace\" color=\"$fontColor\"
size=\"$fontSize\">$strr[5]</font></td>
</tr>";
endfor;
}
?>
Скрипт сбора и показа статистики готов. Теперь нужно вставить в те страницы, информацию о посетителях которой вы хотите просмотреть:
<?php
include("sniffer.php");
if (! isset($$cookieName)) :
//установить куки
setcookie($cookieName, $cookieValue, time()+$timeLimit);
saveUserData();
endif;
?>
Обратите внимание, что этот код нужно вставлять в самый верх страницы, до того, как данные будут передаваться в браузер. В противном случае установить куки не получится. Далее сделаем страницу, выводящюю статистику:
<html><body>
<?php include("sniffer.php"); ?>
Статистика<br>
<?php
showStat();
?></body></html></i>
Здесь мы просто включили файл sniffer.php и вызвали из него функцию showStat() Вот с помощью такого небольшого скрипта, длинной всего ровно в 100 строк, можно с помощью PHP получить и в удобном виде просмотреть. Здесь ещё много чего предстоит сделать, например сделать статистику по реферерам, браузерам... Так же можно из HTTP_USER_AGENT вытащить браузер и ОС и записать их в более удобном виде.