checkdnsrr

(PHP 4, PHP 5, PHP 7)

checkdnsrrBelirtilen bir konak adı veya IP adresi için DNS sorgusu yapar

Açıklama

bool checkdnsrr ( string $konak [, string $tür ] )

konak ile ilgili tür türündeki kayıtlar için DNS sorgusu yapar.

Değiştirgeler

konak

konak noktalı sayısal gösterimli bir IP adresi veya bir konak ismi olabilir.

tür

tür değeri şunlardan biri olabilir: A, MX, NS, SOA, PTR, CNAME, AAAA, A6, SRV, NAPTR, TXT veya ANY. MX öntanımlıdır.

Dönen Değerler

Kayıtlar bulunduğu takdirde TRUE, hiç kayıt yoksa veya bir hata oluşmuşsa FALSE döner.

Sürüm Bilgisi

Sürüm: Açıklama
5.3.0 İşlev Windows platformlarenda kullanılabilir oldu.
5.2.4 TXT türü eklendi.
5.0.0 AAAA türü eklendi.

Notlar

Bilginize:

Bu işlevin henüz gerçeklenmediği PHP sürümlerini çalıştıran Windows platformlarında » PEAR » Net_DNS sınıfını deneyin.

Ayrıca Bakınız

  • dns_get_record() - Belirtilen konak adı ile ilgili DNS Özkaynak Kayıtlarını getirir
  • getmxrr() - Belirtilen konak adı ile ilgili MX kaydını döndürür
  • gethostbyaddr() - Belirtilen IP adresine çözümlenen konak ismini döndürür
  • gethostbyname() - Belirtilen konak adına ait IPv4 adresini döndürür
  • gethostbynamel() - Belirtilen konak adına ait IPv4 adreslerini döndürür
  • named(8) kılavuz sayfası

add a note add a note

User Contributed Notes 5 notes

up
24
Krisztin Ferenczi
4 years ago
criffoh at gmail dot com is right. Before you check domain, you must convert to ascii with idn_to_ascii function:
http://us2.php.net/manual/en/function.idn-to-ascii.php .

var_dump(checkdnsrr('ñandu.cl', 'A')); // returns false
var_dump(checkdnsrr(idn_to_ascii('ñandu.cl'), 'A')); // return true
up
4
Martin
1 year ago
Important Warning:

You need to add a dot to the end of the host name to make a fully qualified domain name.

To see why, try executing the following pieces of code:

$d1="gmail.con";
$d2="gmail.con.";
$r1=checkdnsrr($d1, "MX");
$r2=checkdnsrr($d2, "MX");
var_dump($r1);
var_dump($r2);

You will see that without the dot it claims that the domain "gmail.con" is valid.

Note that if you time the "checkdnsrr()" calls you will also see it takes longer without the dot because it treats it as a relative domain and does several tries based on the host name it is running on.

NB: in case you're interested, being treated as a relative domain explains what is happening. If your host is "example.com" the relative domain will eventually resolve to "gmail.con.com." which can be looked up, hence it wrongly claims "gmail.con" exists
up
8
Patrick
13 years ago
This is a little code example that will validate an email address in two ways:
- first the general syntax of the string is checked with a regular expression
- then the domain substring (after the '@') is checked using the 'checkdnsrr' function

<?php

function validate_email($email){

  
$exp = "^[a-z\'0-9]+([._-][a-z\'0-9]+)*@([a-z0-9]+([._-][a-z0-9]+))+$";

   if(
eregi($exp,$email)){

      if(
checkdnsrr(array_pop(explode("@",$email)),"MX")){
        return
true;
      }else{
        return
false;
      }

   }else{

      return
false;

   }   
}

?>
up
0
dobs
2 months ago
$this->_buf - for bulk check cache

function ValidateEmail($email)
    {
        list($user, $domain) = explode('@', $email);

        if (!filter_var($email, FILTER_VALIDATE_EMAIL) !== FALSE)
            return 0;

        if (isset($this->_buf[$domain]))
            return $this->_buf[$domain];

        if (checkdnsrr($domain) === FALSE) {
            $this->_buf[$domain] = 0;
            return 0;
        }
        $this->_buf[$domain] = 1;

        return 1;
    }
up
0
criffoh at gmail dot com
5 years ago
Is not possible validate domains with 'ñ' for my country.

In my country is possible to register domain using 'ñ' character. For example:

ñandu.cl
http://nic.cl/cgi-bin/dom-CL?q=%F1andu

If I use this function to check DNS record, it return false, but the domain already exists:

var_dump(checkdnsrr('ñandu.cl', 'A')); // returns false
To Top