Основы PHP
  Что такое PHP?
  Возможности PHP
  Преимущества PHP
  История развития
  Что нового в PHP5?
  «Движок» PHP
  Переход на PHP 5.3
New Переход на PHP 5.6
  Введение в PHP
  Изучение PHP
  Основы CGI
  Синтаксис PHP
  Типы данных PHP
  Переменные в PHP
  Константы PHP
  Выражения PHP
  Операторы PHP
  Конструкции PHP
  Ссылки в PHP
  PHP и ООП
  Безопасность
  Функции PHP
  Функции по категориям
  Функции по алфавиту
  Стандартные функции
  Пользовательские
  PHP и HTTP
  Работа с формами
  PHP и Upload
  PHP и Cookies
  PHP и базы данных
  PHP и MySQL
  Документация MySQL
  Учебники
  Учебники по PHP
  Учебники по MySQL
  Другие учебники
  Уроки PHP
  Введение
  Самые основы
  Управление
  Функции
  Документация
  Математика
  Файлы
  Основы SQL
  Дата и время
  CURL
  Изображения
  Стили
  Безопасность
  Установка
  Проектирование БД
  Регулярные выражения
  Подготовка к работе
  Быстрый старт
  Установка PHP
  Установка MySQL
  Конфигурация PHP
  Download / Скачать
  Скачать Apache
  Скачать PHP
  Скачать PECL
  Скачать PEAR
  Скачать MySQL
  Редакторы PHP
  Полезные утилиты
  Документация
  PHP скрипты
  Скачать скрипты
  Инструменты
  PHP в примерах
  Новости портала
 Главная   »  Сборник статей
 
 

PHP и DNS

Автор: IT-студия SoftTime (softtime.ru)

В этой статье мы рассмотрим функции, которые предоставляет PHP для работы с DNS серверами. Наиболее часто возникает задача получения имени хоста по его IP-адресу, другие задачи встречаются значительно реже.

Функция gethostbyname

Синтаксис:

string gethostbyname(string hostname)

Пример использования фунции gethostbyname

<?
$hostname
= "localhost";
$ip_address = gethostbyname($hostname);
echo (
"IP-адрес $hostname: $ip_address");
?>

Функция gethostbynamel

string gethostbynamel(string hostname)

Многие компьютеры имеют несколько IP-адресов, особенно типична такая ситуация для различных серверов. Получить полный список IP-адресов, соответствующих данному имени компьютера, можно с помощью функции gethostbynamel, действующей аналогично функции gethostbyname. Другая ситуация, в которой полезно применение этой функции, возникает, когда одно имя DNS соответствует нескольким компьютерам. Это бывает при работе с DNS серверами, поддерживающими механизм кругового распределения нагрузки, при котором одно имя DNS сервера отображается на несколько компьютеров в локальной сети этого сервера.

Возвращаемый список IP-адресов функция gethostbynamel помещает в массив:

<?
$hostname
= "localhost";
$ip_addresses = gethostbyname($hostname);
echo(
"The IP adresses of '$hostName' are: <br>\n");
foreach(
$ip_adresses as $index => $val)
{
  echo(
"$val");
}
?>

Функция gethostbyaddr

Эта функция принимает в качестве аргумента IP-адрес и возвращает соответствующее ему имя хоста:

<?
$ip_address
= "127.0.0.1";
$hostname = gethostbyaddr ($ip_address);
echo (
"Имя хоста с IP-адресом $ip_address: $hostname");
?>

Функция checkdnsrr

string checkdnsrr(string hostname [, string type])

DNS сервер сохраняет немало полезной информации о хосте, для чего используются так называемые записи ресурсов, которые имеют следующие типы:

  • A (Запись содержит IP-адрес хоста);
  • CNAME (Запись содержит псевдоним хоста);
  • NS (Запись содержит имя DNS-сервера, являющегося авторитетным для поддо-мена. Авторитетным является такой DNS-сервер, который замыкает цепочку DNS-запросов);
  • МХ (Запись содержит Имя хоста почтового ретранслятора в домене, которому принадлежит данный хост. В этой записи также хранится значение коэффициента предпочтения для почтового ретранслятора);
  • PTR (Запись хранит отображения IP-адресов в имена).

Функция checkdnsrr находит на DNS-сервере записи ресурсов вида type для хоста hostname

Примечание: Эта функция не поддерживается на Windows-платформах.

Функция getmxrr

string getmxrr(string hostname, array mxhost, [, array weight])

Эта функция принимает в качестве аргумента имя хоста hostname в данном домене и заполняет массив mxhost списком почтовых ретрансляторов этого домена. Если указан третий необязательный аргумент weight, то функция заполняет его значениями предпочтения, которые возвращает ей почтовый ретранслятор

Функция getmxrr является достаточно полезной. Дело в том, что когда требуется послать сообщения по адресу username@someserver.com, необходимо сначала узнать хост почтового ретранслятора для домена someserver.com, а затем получить его IP-адрес. После этого можно соединяться с хостом для доставки почты. В домене может быть несколько почтовых ретрансляторов с разными значениями предпочтения, поэтому, получив список ретрансляторов, имеет смысл устанавливать соединение с тем из них, который имеет максимальное значение предпочтения.

В следующем листинге показан пример кода, с помощью которого можно получить список почтовых ретрансляторов:

Получение списка почтовых ретрансляторов

<?
$domain
= "server.com";
getmxrr($domain, $maillist, $priority);
echo(
"Список почтовых ретрансляторов хоста $domain:
\n"
);
for(
$i = 0; $i < count($maillist); ++$i)
{
  echo(
"$maillist[$i] = $priority[$i]
\n"
);
}
?>

Проверка существования адреса электронной почты

Заметим сразу, что речь идет не о проверке адресов с помощью регулярного выражения, а о проверке существования хоста почтового ретранслятора для некоторого домена. Т.е. приведенный выше код можно практически не перерабатывая приспособить для проверки существования e-mail адреса:

<?
$email_arr
= explode("@" , $email);
$host = $email_arr[1];

if (!
getmxrr($host, $mxhostsarr))
{
  echo
"На адрес $email отправка почты невозможна";
  exit;
}

getmxrr($host, $mxhostsarr, $weight);
echo
"На $email письма могут отправляться через следующие хосты:
"
;
for (
$i=0; $i < count($mxhostsarr); $i++)
{
  echo (
"$mxhostsarr[$i] = $weight[$i]
"
);
}

?>

 
 » Обсудить эту статью на форуме

 
 Сборник статей 
 Содержание раздела 
Есть еще вопросы или что-то непонятно - добро пожаловать на наш  форум портала PHP.SU 
 

 
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS