[php] check of een domein bestaat, gethostbyname werkt niet

Pagina: 1
Acties:

Onderwerpen


  • Jace / TBL
  • Registratie: Augustus 2001
  • Laatst online: 23-03-2023
Om te kijken of een email adres dat iemand invult geldig lijkt, check ik of het gedeelte na de @ een geldige domeinnaam is. Nou dacht ik dat te kunnen doen door gethostbyname(domeinnaam) en als daar een ip adres uitkomt bestaat het domein.
Maar helaas: er zijn domeinnamen (niet heel zeldzaam) die niet kunnen worden geresolved.

Bijvoorbeeld iemand@avenew.com, dat adres is geldig maar ik kan avenew.com niet resolven (en dus ook niet pingen of tracert'en).

Ander voorbeeld is: dnet.it (in dit geval is www.dnet.it trouwens wel geldig)

Mijn vraag is dus: hoe check ik dan wel of een domein bestaat?
(en daarbij verwonder ik me ook over hoe een email dan ooit bij zo'n adres kan aankomen :?)

[ Voor 8% gewijzigd door Jace / TBL op 15-09-2004 18:45 ]


  • KorZijl
  • Registratie: December 2002
  • Laatst online: 30-11-2021

KorZijl

errare humanum est

Als je nou eens de MX-records van dat domein opvraagd? Dan weet je in ieder geval dat er een mailserver achterhangt.

  • Jace / TBL
  • Registratie: Augustus 2001
  • Laatst online: 23-03-2023
goed idee, hoe doe ik dat? :)

(edit) oh, met getmxrr kennelijk :)
okee tnx!

[ Voor 47% gewijzigd door Jace / TBL op 15-09-2004 18:50 ]


Verwijderd

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function isMail($email, $check_dns = true) {
   if ((preg_match('/(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/', $email)) ||
   (preg_match('/^.+\@(\\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/',
   $email))) {
      if ($check_dns) {
         $host = explode('@', $email); 
         // Check for MX record
         if (checkdnsrr($host[1], 'MX'))
            return true; 
         // Check for A record
         if (checkdnsrr($host[1], 'A'))
            return true; 
         // Check for CNAME record
         if (checkdnsrr($host[1], 'CNAME'))
            return true;
      } else {
         return true;
      } 
   } 
   return false;
}

  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

getmxrr()

edit:
Spuit 11 :+

[ Voor 16% gewijzigd door AtleX op 15-09-2004 18:51 ]

Sole survivor of the Chicxulub asteroid impact.


  • KorZijl
  • Registratie: December 2002
  • Laatst online: 30-11-2021

KorZijl

errare humanum est

Let wel op dat een domein geen MX-records hoeft te hebben! In dat geval is wordt het A-record gebruikt ;) Daarom is voor de oplossing van TheProspector ook wel iets te zeggen.

  • Jace / TBL
  • Registratie: Augustus 2001
  • Laatst online: 23-03-2023
Okee dan!

En dat een domein op zich geen MX hoeft te hebben, geldt dat ook voor domeinen die in geldige @dressen kunnen voorkomen? Of alleen voor domeinnamen in het algemeen (websites enzo) en moet je om er heen te kunnen mailen wel echt een MX record hebben?

  • KorZijl
  • Registratie: December 2002
  • Laatst online: 30-11-2021

KorZijl

errare humanum est

MX is alleen nodig als de webserver en de mailserver op een verschillend IP-adres zitten. Zitten ze op hetzelfde adres, dan heb je geen MX-record nodig, maar het mag wel...

  • Jace / TBL
  • Registratie: Augustus 2001
  • Laatst online: 23-03-2023
Hulde & lof, ik ben gered \o/
Pagina: 1