
- •В.С. Романчик
- •Глава 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. Популярные веб-приложения и фреймворки
- •Фреймворки
Проверка ввода емайл
Пригодится для проверки правильности ввода посетителем емайла в форме.
<?
if ($email != '' AND !eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$",$email))
{
// Код если не указан e-mail или имеет недопустимый формат ";
} else {
// Код если ОК
}
?>
Рассмотрим стандартную функцию для отправки писем - mail() - на примере организации обмена сообщениями через ICQ.
У каждого пользователя ICQ есть некий адрес формата UIN@pager.mirabilis.com, где вместо UIN нужно вставить только номер своего друга. Такой почтовый адрес мы и будем использовать для пересылки сообщений.
Синтаксис функции отправки письма такой:
bool mail (string $to, string $subject, string $msg [, string $headers])
будем передавать функции mail() только адрес получателя и текст письма, а заголовок и тему будем печатать в самом сообщении. Например:
$message= "From: Рассылка To: Васечкин Вася Васильевич Subject: Пробная рассылка
Content-type: text/plain; charset=windows-1251 Пробное письмо. Вы его обязательно прочитаете";
Mail ("vasechkin@vasja.vasilevich", "", $message);
Видите новую строку - Content-type? Она указывает кодировку windows-1251. Пустая строка необходима, чтобы почтовая программа смогла правильно разобрать письмо в целом и правильно его перекодировать.
Теперь от теории перейдем непосредственно к самой программе. Назовем ее Анонимный пейджер. Во-первых, программка будет выводить некую форму, в которой нужно ввести свое имя - ведь должен же ваш друг знать, от кого пришло сообщение, не правда ли? Там же будем вводить сам номер Аськи и само сообщение, для чего прилепим где-то рядом кнопки Отправить и Очистить. Теперь воспользуемся знакомой функцией mail(). Ее синтаксис в нашем случае будет таким:
mail("$to_icq@pager.mirabilis.com",$subject,$body,$headers);
Создаем файл pager.php, открываем и... сохраняем следующее:
<?php // Для начала обьявим константы
define("thank", "thank.html"); /*Страница об успешной отсылке сообщения*/ define("min_size", 10); //Минимум символов в сообщении
define("max_size", 1000); //Максимум символов в сообщении
define("subject", "Этот пейджер от php4you.h10.ru"); /*здесь мы определим константы возможных ошибок*/
define("no_name", "Вы не ввели свое Имя");
define("no_message", "Вы не ввели сообщение");
define("max_error", "Ваше сообщение оч-ч-ч-чень длин-н-н-ное");
define("min_error", "Ваше сообщение слишком короткое");
define("number_error", " Такого ICQ UIN'а не существует");
define("error_title", "Заданы неправильные параметры");
define("back", '#993366'); //Фон страницы с ошибками
define("text", '#ffffff'); //Цвет текста на странице с ошибками
define("h2", '#ссссcc'); //Заголовок страницы ошибок
define("error_message", "Поля заполнены неправильно, перепроверьте их, пожалуйста!"); //Теперь сначала проверим возможные критические ошибки
$result=1;
if(@$name==""){ //Проверяем, задано ли имя $result=0; $error1="<li>no_name</li>"; } if(@$message==""){ //Проверяем, введено ли сообщение
$result=0; $error2="<li>no_message</li>"; } elseif (strlen($message) <= min_size) { /*Проверяем, насколько коротко введеное сообщение*/ $error3="<li>min_error</li>"; $result=0; } elseif (strlen($message) >= max_size) { /*Проверяем, не очень ли длинно введенное сообщение*/ $error4="<li>max_error</li>"; $result=0; } if (@$to_icq!==""){ if (@!eregi("^[0-9]{9,}$", $to_icq)){ /*Проверить действительность UIN'a, иначе выдать ошибку несоответствия номера*/ $error5="<li>number_error</li>"; $result=0; } } else{ $to_icq=trim($to_icq); /*Выбросим из аськиного УИНа всякие там мешающие всем пробелы*/ } if ($result==1){ /*После всех проверок можно спокойно заняться нашей задачей, а именно вызвать функцию mail() с необходимыми для нас аргументами и отослать сообщение адрусату*/ $body="$message\n";/*Ну а здесь немного служебной информации*/
$body.='<center><marquee bgcolor="navy" scrollamount="3" width="50%"><font color=white>';
$from="$name";
$headers="Content-Type: text/html; charset=windows-1251\n"; $headers.="From: $from\n"; mail("$to_icq@pager.mirabilis.com",subject,$body,$headers); Header ("Location: thank.html");/*И если все прошло нормально, то выведем соответствующую страницу об успешной отправке сообщения*/ }
if ($result!==1){ /*Если мы "прoпустили" ошибку, то выведем соответствуещее сообщение*/ echo ("<body bgcolor=back text=text><title>Error send!!!
</title> <center><h2><font color='h2'>Ошибка отправления сообщения</font></h2></center><ol>$error1$error2$error3$error4 $error5</ol></center></body>"); } ?>
Все, с программкой закончили. Надеюсь, все понятно. Если нет, то присмотритесь к комментариям в тексте программы. Теперь надо создать файл pager.html следующей структуры:
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <title><<-- Анонимный пейджер -->></title> </head> <body color="#ff85a3" text="#000000" > <h3 align="center">Анонимный пейджер</h3> <form action=pager.php method=post> <table align=center border=2 bordercolordark=#996600 height=100% width=442> <tr bgcolor="#ff85a3"> <td height=403 width=432> <table bgcolor="#ff85a3" width="100%"> <tr> <td align=right valign=center width="71%"> Введите свое имя : <td align=right valign=center width="29%"> <input maxlength=255 name=name size=25> </td> <tr> <td align=right valign=center width="71%">На какой ICQ-номер отсылать: <td align=right valign=center width="29%"> <input maxlength=255 name=to_icq size=25> </td> </table> <hr width="100%"> <table border=0 cellpadding=0 cellspacing=0 width="100%"> <tr> <td valign=baseline width=1 height="46"> </td> <td valign=bottom width="416" height="46" align="center"> <p align=center><strong>Введите текст сообщения:</strong></p> </td> </tr> </table> <p align=center> <textarea cols=50 name=message rows=10></textarea> </p> <p align="center"> <input type=submit value="Отправить"> <input type=reset value="Очистить поля" name="reset"> </p> </td> </tr> </table> </form> </body> </html>
Итак, нам осталось создать последний файлик - thank.html:
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <title>Сообщение отправлено</title> </head> <body text="#000000"> <center> <h2> <font color="#FF0066"> Ваше сообщение успешно отправлено </font></h2><font color="#FF0066"> <hr> И, пожалуйста, не шлите спам<br> </center> </body> </html>