Оглавление

Использование классов сторонних разработчиков

.Лучший способ изучить работу с классами — использовать их.  Рассмотрим  популярную библиотеку, разработанную Мануэлем Лемосом (Manuel Lemos). Она позволяет выполнять проверку электронного адреса. Сначала нужно загрузить этот класс по адресу: www.phpclasses.org/browse/file/28.html и сохранить в файле email_.validation.php. Класс Мануэля, кроме проверки почтового адреса, проверяет существование домена. После этого он соединяется с удаленным почтовым сервером,  чтобы убедиться  в существовании почтового ящика.

 

 

Поиск домена
Чтобы использовать этот пример на Web-сервере под управлением Windows, нужно загрузить дополнительный файл getmxrr.php, который содержит поиск доменов для РНР. Он находится по адресу: www. phpclasses.org/browse/file/2080.html.

 

 

В сценарии email_validation.php определяется класс email_validation_class.  Первое, что нужно сделать, — создать экземпляр объекта, который выполняет проверку с именем $validator:

$validator = new email_validation_class;  


Можно задать нужные свойства для нового класса. Некоторые нужны для корректной работы класса, а остальные позволяют изменять стандартное поведение.

 
Для  каждого объекта  нужно установить свойства.   Это название ящика и имя домена реального почтового адреса, от имени которого выполняется проверка. Для этих свойств нельзя задать стандартные значения, их нужно установить самому, как показано ниже:

$validator->localuser = "chris";  

$validator->localhost = "lightwood.net";


Необязательное свойство  timeout задает максимальное количество секунд на ожидание соединения с удаленным почтовым  сервером.   Установка  свойства  debug  позволяет увидеть на экране процесс соединения с удаленным сервером и узнать, какие запросы выполняет сценарий во время проверки. Выражение ниже устанавливает время ожидания 10 секунд и включает режим отладки:

$validator->timeout = 10;  

$validator->debug = TRUE;


Полный список свойств настройки для объекта проверки приводится в табл. 10.1.

 
Таблица 10.1. Свойства класса email_validation_class

СвойствоОписание
timeoutЗадает максимальное количество секунд ожидания соединения с удаленным почтовым сервером
data_timeoutЗадает максимальное количество секунд для обмена данными с почтовым сервером. Если задан ноль, то используется значение timeout
localuserЗадает пользовательскую часть адреса электронной почты, от имени которого выполняется проверка
localhostЗадает имя домена адреса электронной почты, от имени которого выполняется проверка
debugАктивизирует режим вывода на экран всего процесса соединения с удаленным сервером
html_debugЗадает опцию вывода сообщений из режима от ладки в виде HTML

 

Методы в классе email_validation_class в основном закрытые, к ним нельзя обращаться напрямую. Но внутренний код составляет завершенный набор функций. Рассмотрев содержимое  email_validation.php, можно увидеть определение функций, таких как Tokenize, GetLine и VerifyResultLines.  Но они совершенно бесполезны за пределами класса, в котором определены.


В объекте есть только один открытый метод под названием ValidateEmailBox, который и выполняет нужную проверку. При вызове он устанавливает в виде строки почтовый адрес, который нужно проверить. Ниже показан пример вызова ValidateEmailBox:


$email = "chris@datasnake.co.uk";
if ($validator->ValidateEmailBox($email)) {
	echo "$email является корректным почтовым адресом";
}
else {
echo "$email не прошел проверки";
}

Метод ValidateEmailBox возвращает значение, которое показывает результат проверки. Если включить режим отладки с помощью атрибута debug, кроме вывода из сценария, можно увидеть примерно следующее:
Resolving host name "mail.datasnake.co.uk"...

Conneting to host address "217,158.68.125"...
Connected.

S 220 mail.datasnake.co.uk ESMTP

C HELO lightwood.net
S 250 mail.datasnake.co.uk
C MAIL FROM: <chris@lightwood.net>

S 250 ok
C RCPT TO: <chris@datasnake.co.uk>
S 250 ok

C DATA

S 254 go ahead
This host states that the address is valid.
Disconnected.

Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.
Отправитель Нити