In diesem Artikel möchte ich euch ein Script vorstellen, dass ich für ein aktuelles Projekt programmiert habe. Es handelt sich dabei um einen DomainCheck mit dem überprüft werden kann, ob eine Domain bereits registriert ist oder noch registriert werden kann.
Das Prinzip dahinter ist relativ einfach: Wir haben eine Liste mit Whois Abfrage Servern und entsprechende Rückgabewerte, wenn die Domain frei ist. Mithilfe dieser Liste werden dann die Domains auf den entsprechenden Verfügbarkeitsstatus überprüft.
Ihr könnt das Script im Rahmen der GNU General Public License vollumfänglich weiter nutzen. Vielleicht hat der Eine oder Andere von euch einen Verwendungszweck für das Script. Viel Spaß damit.
Anzeige:
<?php/*
*
* Author: Pascal Bajorat
* Copyright (c) 2010 Pascal Bajorat
* www.webdesign-podcast.de
*
* GNU General Public License lizenziert
* http://www.gnu.org/licenses/gpl.html
* http://creativecommons.org/licenses/GPL/2.0/deed.de
*
* DomainCheck Script
* Version 1.0.0
*
* DomainCheck Script. Zum testen ob Domains bereits vergeben sind oder noch registriert werden können.
*
*//* Array mit DomainTopLevel => Whois Url || Rückgabewert wenn die Domain frei ist */$nic=array('de'=>'whois.nic.de||free','at'=>'whois.nic.at||nothing found','com'=>'whois.crsnic.net||no match for');// Fehlermeldung, wenn die Eingabe der Domain fehlerhaft ist$WrongDomain='Die eingegebene Domain ist fehlerhaft. Bitte überprüfen Sie Ihre Schreibweise: domain.tld';// Fehlermledung wenn diese TopLevel Domain nicht überprüft werden soll$DontSellDomain='Bitte entschuldigen Sie, aber wir vertreiben diese TopLevelDomain nicht. Bitte entscheiden Sie sich für eine: .de, .at oder .com Domain.';// Fehlermeldung wenn der Server der NIC Vergabestelle nicht erreichbar ist$ServerNotReachable='Der Server der Vergabestelle ist aktuell nicht erreichbar, bitte versuchen Sie es später noch einmal.';/*
* $_REQUEST['domain'] ist die Variable über die die Domain die überprüft werden soll übergeben wird
* strtolower() wandelt den kompletten String in Kleinbuchstaben um
* trim() entfernt Leerzeichen am Anfang und Ende des Strings
* strip_tags() entfernt HTML Tags
*
* Der geänderte und bearbeitete String wird in der Variable $domain gesichert
*
*/$domain=strip_tags(trim(strtolower($_REQUEST['domain'])));// Überprüfen das die Variable $domain nicht leer ist ansonsten wird eine Fehlermeldung ausgegebenif(!empty($domain)){// Aus der $domain Variable werden die ggf. vom Nutzer mit eingegebenen http:// und www. Teile entfernt$domain=str_replace('http://','',$domain);$domain=str_replace('www.','',$domain);// Die Domain wird anhand des Punktes in zwei Teile geteilt DomainName.TopLevel$domain=explode('.',$domain);$domainCount=count($domain);// Danach wird überprüft ob die Domain auch wirklich nur aus zwei Teilen besteht,// damit z.B. keine Subdomains eingegeben werden Sub.DomainName.TopLevelif($domainCount>2){die($WrongDomain);}// Überprüfung ob die eingegebene TLD in unserem Array ($nic) enthalten ist und überprüft werden kannif(empty($nic[$domain[1]])){die($DontSellDomain);}else{// Wenn der Array Teil für die entsprechende TLD vorhanden ist wird dieser anhand des || gesplittet$myNic=explode('||',$nic[$domain[1]]);// $NicServer enthält die Server URL$NicServer=$myNic[0];// $NicFreeResponse enthält den Rückgabewert wenn die Domain frei ist$NicFreeResponse=$myNic[1];}// Checken ob der entsprechende whois Server erreichbar ist und dann Verbindung aufbauenif(!($fp=fsockopen($NicServer,43))){// Wenn nicht wird diese Fehlermeldung ausgegebendie($ServerNotReachable);}// Dem Server den zu überprüfenden Domainnamen übergebenfwrite($fp,$domain[0].'.'.$domain[1]."\r\n");$result='';// Antwort vom whois Server holenwhile(!feof($fp)){$result.=fread($fp,1024);}// Verbindung zum Server wieder trennenfclose($fp);// Die Antwort des whois Servers mit dem Rückgabewert aus dem Array vergleichenif(strstr($result,$NicFreeResponse)){// Ist der Vergleich erfolgreich, so wird die Nachricht zurückgegebenecho'Die Domain '.$domain[0].'.'.$domain[1].' ist noch nicht vergeben. Wir können die Domain für Sie registrieren.';}else{// Ist die Domain bereits vergeben, erscheint diese Fehlermeldungecho'Es tut uns leid, die Domain '.$domain[0].'.'.$domain[1].' ist leider vergeben. Vielleicht möchten Sie eine andere Domain-Kombination ausprobieren?';}}else{// Fehlermeldung wenn der Inhalt der Variable $domain leer istecho$WrongDomain;}?>
<?php
/*
*
* Author: Pascal Bajorat
* Copyright (c) 2010 Pascal Bajorat
* www.webdesign-podcast.de
*
* GNU General Public License lizenziert
* http://www.gnu.org/licenses/gpl.html
* http://creativecommons.org/licenses/GPL/2.0/deed.de
*
* DomainCheck Script
* Version 1.0.0
*
* DomainCheck Script. Zum testen ob Domains bereits vergeben sind oder noch registriert werden können.
*
*/
/* Array mit DomainTopLevel => Whois Url || Rückgabewert wenn die Domain frei ist */
$nic = array(
'de' => 'whois.nic.de||free',
'at' => 'whois.nic.at||nothing found',
'com' => 'whois.crsnic.net||no match for'
);
// Fehlermeldung, wenn die Eingabe der Domain fehlerhaft ist
$WrongDomain = 'Die eingegebene Domain ist fehlerhaft. Bitte überprüfen Sie Ihre Schreibweise: domain.tld';
// Fehlermledung wenn diese TopLevel Domain nicht überprüft werden soll
$DontSellDomain = 'Bitte entschuldigen Sie, aber wir vertreiben diese TopLevelDomain nicht. Bitte entscheiden Sie sich für eine: .de, .at oder .com Domain.';
// Fehlermeldung wenn der Server der NIC Vergabestelle nicht erreichbar ist
$ServerNotReachable = 'Der Server der Vergabestelle ist aktuell nicht erreichbar, bitte versuchen Sie es später noch einmal.';
/*
* $_REQUEST['domain'] ist die Variable über die die Domain die überprüft werden soll übergeben wird
* strtolower() wandelt den kompletten String in Kleinbuchstaben um
* trim() entfernt Leerzeichen am Anfang und Ende des Strings
* strip_tags() entfernt HTML Tags
*
* Der geänderte und bearbeitete String wird in der Variable $domain gesichert
*
*/
$domain = strip_tags(trim(strtolower($_REQUEST['domain'])));
// Überprüfen das die Variable $domain nicht leer ist ansonsten wird eine Fehlermeldung ausgegeben
if( !empty($domain) ){
// Aus der $domain Variable werden die ggf. vom Nutzer mit eingegebenen http:// und www. Teile entfernt
$domain = str_replace('http://', '', $domain);
$domain = str_replace('www.', '', $domain);
// Die Domain wird anhand des Punktes in zwei Teile geteilt DomainName.TopLevel
$domain = explode('.', $domain);
$domainCount = count($domain);
// Danach wird überprüft ob die Domain auch wirklich nur aus zwei Teilen besteht,
// damit z.B. keine Subdomains eingegeben werden Sub.DomainName.TopLevel
if($domainCount > 2){ die($WrongDomain); }
// Überprüfung ob die eingegebene TLD in unserem Array ($nic) enthalten ist und überprüft werden kann
if( empty($nic[$domain[1]]) ){ die($DontSellDomain); }else{
// Wenn der Array Teil für die entsprechende TLD vorhanden ist wird dieser anhand des || gesplittet
$myNic = explode('||', $nic[$domain[1]]);
// $NicServer enthält die Server URL
$NicServer = $myNic[0];
// $NicFreeResponse enthält den Rückgabewert wenn die Domain frei ist
$NicFreeResponse = $myNic[1];
}
// Checken ob der entsprechende whois Server erreichbar ist und dann Verbindung aufbauen
if ( !($fp = fsockopen($NicServer, 43)) ) {
// Wenn nicht wird diese Fehlermeldung ausgegeben
die($ServerNotReachable);
}
// Dem Server den zu überprüfenden Domainnamen übergeben
fwrite($fp, $domain[0].'.'.$domain[1]."\r\n");
$result = '';
// Antwort vom whois Server holen
while (!feof($fp)) {
$result .= fread($fp, 1024);
}
// Verbindung zum Server wieder trennen
fclose($fp);
// Die Antwort des whois Servers mit dem Rückgabewert aus dem Array vergleichen
if( strstr($result, $NicFreeResponse) ){
// Ist der Vergleich erfolgreich, so wird die Nachricht zurückgegeben
echo 'Die Domain '.$domain[0].'.'.$domain[1].' ist noch nicht vergeben. Wir können die Domain für Sie registrieren.';
}else{
// Ist die Domain bereits vergeben, erscheint diese Fehlermeldung
echo 'Es tut uns leid, die Domain '.$domain[0].'.'.$domain[1].' ist leider vergeben. Vielleicht möchten Sie eine andere Domain-Kombination ausprobieren?';
}
}else{
// Fehlermeldung wenn der Inhalt der Variable $domain leer ist
echo $WrongDomain;
}
?>
Hast du Ergänzungen, Anregungen oder eine andere Meinung zu diesem Thema? Dann schreib uns dein Feedback doch einfach in die Kommentare weiter unten, wir freuen uns auf deine Rückmeldung.
Wenn du möchtest, kannst du diesen Artikel gerne mit deinen Freunden oder Kollegen teilen und weiterempfehlen oder uns Flattrn: . Wir sind dir für jede Unterstützung dankbar!
Pascal Bajorat ist Mediengestalter und arbeitet als Webdesigner / Webentwickler, Autor und Trainer in Berlin. In den vergangenen Jahren hat er sich vor allem auf das CMS WordPress und die Entwicklung von hochwertigen Webseiten und Sonderlösungen spezialisiert. Er hat den Webdesign-Podcast.de 2010 gegründet.
Dankeschön!
„de“ klappt prima!
„com“ gibt mir leider immer eine bereits belegte Domain zurück.
„net“ habe ich auch erfolglos mit „’net’=>’whois.internic.net||no match for‘,“ anzufügen…
Hat jemand einen Tipp? 🙂
Sollte eigentlich ohne Probleme funktionieren, ist ja soweit komplett fertig. Du musst halt noch das entsprechende HTML-Formular basteln.
Viel Spaß mit dem Script
Hallo!
Super, genau sowas suche ich. Wie muss das HTML-Formular ausschauen, damit es funktioniert? Sorry aber bin da noch etwas unbedarft. Gibt es das Script vielleicht irgendwo im Einsatz wo ich mal schauen kann?
Freue mich auf eine Rückmeldung.
Viele Grüße, Marc
Ja, das war mal online. Die Seite wurde allerdings überarbeitet und hat diese Funktion jetzt nicht mehr…
Hallo nochmal…soweit so gut, die Abfrage läuft. 🙂
Aber jetzt muss ich doch noch eine dumme Frage stellen, da ich mich mit php nicht die Bohne auskenne: wie kann ich nun die Meldungen des Scripts auf der Abfrageseite integrieren? Derzeit schreibt er das Ganze oberhalb der eigentlichen Seite, was natürlich nicht gerade schick ausschaut.
Freue mich auf deine Antwort.
Viele Grüße und Danke vorab
Marc
Könnte nützlich sein bzw. manuelle Arbeit ersparen. Ist ja schon bisschen älter, mal sehen ob das mit php 5.3 klappt.
@Marc naja die ausgabe erfolgt da wo „echo“ steht. Maqn könnte ne art theming funktion schreiben die das hübscher gestaltet.
Hallo Pascal,
bei mir funktioniert da was nicht, ich erhalte die Meldung
„Die eingegebene Domain ist fehlerhaft. Bitte überprüfen Sie Ihre Schreibweise: domain.tld“
Ich habe versuchsweise ein Formular erstellt: http://www.rhdw.de/domaincheck.html und das Script in die Seite check.php eingebaut, die check.php im selben Verzeichnis hinterlegt und in der html-Datei die Zeile
eingefügt.
Offensichtlich wird das php-Script einwandfrei erkannt und ausgelesen.
ist dir zufällig bekannt, wie der korrekte (!) Rückgabewert bei .eu Domains lautet?
Leider bekomme ich für .eu-Domains keine korrekte Abfrage hin. Führe ich eine Whoisabfrage über whois.eu aus, erhalte ich als Ausgabe „Domain: DOMAINNAME Status: AVAILABLE“ – AVAILABLE funktioniert jedoch nicht.
ich habe ein Problem mit dem Script, hoffe das Du mir helfen kannst.
Ich habe das „$nic = array(“ von drei auf 5 (de, org, com, net und info) erweitert.
Weiterhin wollte ich hier „$domain = strip_tags(trim(strtolower($_POST[‚domain‘]))); “ die Anfrage per POST senden, was auch geht.
Mein HTML-Formular hat diesen Code.
<form action="“ method=“POST“
enctype=“multipart/form-data“ accept-charset=““>
Wunschdomain noch frei?
www.
Auf folgende Endungen kann geprüft werden: .de, .com, .net, .org, .info
Jetzt wollte ich das, wenn eine Domain noch frei ist oder nicht das die Ausgabe per echo wo anders steht. Da es einfach auf meiner Seite besser aussieht. Außerdem wollte ich das die Domain „$domain“ oder „domain“ per SESSION an ein Formular übergeben wird. Der Ausgabetext das die Domain noch frei ist oder nicht soll aber nur angezeigt werden, wenn die SESSION aufgerufen wird. Nur leider ist es im Moment so, dass er angezeigt wird, wenn ich das erste mal nach einer Domain gesucht habe.
Ich habe deswegen mal das „“ eingegeben und bekam folgende Meldung. (Original Script): “ Notice: Undefined index: domain in xxx.php on line 40
Die eingegebene Domain ist fehlerhaft. Bitte überprüfen Sie Ihre Schreibweise: domain.tld“
Hallo Profis,
das Script bzw. die Abfrage funktioniert bei mir nicht, kann es sein das Aufgrung der neuen DSGVO eine Abfrage der Domains nicht mehr möglich ist?
Gruss André
das Script ist schon etwas älter und muss ggf. weiter angepasst werden.
Leider können wir so eine Hilfe nicht hier im Blog über die Kommentare leisten, falls hier Interesse besteht unterstützen wir gerne im Rahmen unserer Agentur-Leistungen: https://www.pascal-bajorat.com/
Der Benachrichtigungs-Dienst wird von WordPress.com (Automattic Inc., USA ) bereitgestellt. Mit der Anmeldung akzeptierst du die Datenschutzerklärung. Die Abmeldung / Abo-Verwaltung ist jederzeit über diesen Link möglich.
Er würde uns abonnieren! Chuck Norris roundhouse kick approved!
Abonniere unseren Newsletter und erhalte exklusive Artikel, Informationen und Sonderangebote für Stockdienste oder Webentwickler-Tools.
sehr schön, fehlt nur noch ein Alternativvorschlag für schon vergebene Domains ,)
Das Tool ist für mich als Webdesigner sehr hilfreich und effizient; ich kann es nur weiter empfehlen. Besten Dank!
Dankeschön!
„de“ klappt prima!
„com“ gibt mir leider immer eine bereits belegte Domain zurück.
„net“ habe ich auch erfolglos mit „’net’=>’whois.internic.net||no match for‘,“ anzufügen…
Hat jemand einen Tipp? 🙂
Hi, Leser
ich verwende genau das Script in der Version auf einer Webseite und es funktioniert ohne Probleme.
Wenn du uns villeicht die URL schickst auf welcher Webseite du das ganze versuchst. Dann kann ich mir die Fehlerausgabe mal ansehen.
Grüße
Pascal
Danke Pascal, aber wie schon gesagt gab es keine Fehlermeldung.
Ich habe noch etwas getestet.
Der Rückgabewert vom Server was „…No match for..“ – nicht „..no match for..“.
Mit der geänderten Zeile:
if( stristr($result, $NicFreeResponse) ){
funktioniert jetzt auch alles.
Hallo,
nettes Script, sowas habe ich gesucht.
Mal schauen ob ich das ganze auch zum Laufen bekommen werde.
Liebe Grüße
Manuel
Sollte eigentlich ohne Probleme funktionieren, ist ja soweit komplett fertig. Du musst halt noch das entsprechende HTML-Formular basteln.
Viel Spaß mit dem Script
Hallo!
Super, genau sowas suche ich. Wie muss das HTML-Formular ausschauen, damit es funktioniert? Sorry aber bin da noch etwas unbedarft. Gibt es das Script vielleicht irgendwo im Einsatz wo ich mal schauen kann?
Freue mich auf eine Rückmeldung.
Viele Grüße, Marc
Ja, das war mal online. Die Seite wurde allerdings überarbeitet und hat diese Funktion jetzt nicht mehr…
Hallo nochmal…soweit so gut, die Abfrage läuft. 🙂
Aber jetzt muss ich doch noch eine dumme Frage stellen, da ich mich mit php nicht die Bohne auskenne: wie kann ich nun die Meldungen des Scripts auf der Abfrageseite integrieren? Derzeit schreibt er das Ganze oberhalb der eigentlichen Seite, was natürlich nicht gerade schick ausschaut.
Freue mich auf deine Antwort.
Viele Grüße und Danke vorab
Marc
Könnte nützlich sein bzw. manuelle Arbeit ersparen. Ist ja schon bisschen älter, mal sehen ob das mit php 5.3 klappt.
@Marc naja die ausgabe erfolgt da wo „echo“ steht. Maqn könnte ne art theming funktion schreiben die das hübscher gestaltet.
Hallo Pascal,
bei mir funktioniert da was nicht, ich erhalte die Meldung
„Die eingegebene Domain ist fehlerhaft. Bitte überprüfen Sie Ihre Schreibweise: domain.tld“
Ich habe versuchsweise ein Formular erstellt: http://www.rhdw.de/domaincheck.html und das Script in die Seite check.php eingebaut, die check.php im selben Verzeichnis hinterlegt und in der html-Datei die Zeile
eingefügt.
Offensichtlich wird das php-Script einwandfrei erkannt und ausgelesen.
Was kann da noch fehlerhaft sein?
Gruß
R.H.
Du übermittelst die Eingabe der Domain nicht korrekt: http://www.rhdw.de/check.php?domain=pascal-bajorat.de – damit geht es.
Hallo Pascal,
ist dir zufällig bekannt, wie der korrekte (!) Rückgabewert bei .eu Domains lautet?
Leider bekomme ich für .eu-Domains keine korrekte Abfrage hin. Führe ich eine Whoisabfrage über whois.eu aus, erhalte ich als Ausgabe „Domain: DOMAINNAME Status: AVAILABLE“ – AVAILABLE funktioniert jedoch nicht.
Mein Fehler – warum auch immer: Jetzt klappt es (‚eu‘ => ‚whois.eu||AVAILABLE‘,)
Hallo Pascal,
ich habe ein Problem mit dem Script, hoffe das Du mir helfen kannst.
Ich habe das „$nic = array(“ von drei auf 5 (de, org, com, net und info) erweitert.
Weiterhin wollte ich hier „$domain = strip_tags(trim(strtolower($_POST[‚domain‘]))); “ die Anfrage per POST senden, was auch geht.
Mein HTML-Formular hat diesen Code.
<form action="“ method=“POST“
enctype=“multipart/form-data“ accept-charset=““>
Wunschdomain noch frei?
www.
Auf folgende Endungen kann geprüft werden: .de, .com, .net, .org, .info
Jetzt wollte ich das, wenn eine Domain noch frei ist oder nicht das die Ausgabe per echo wo anders steht. Da es einfach auf meiner Seite besser aussieht. Außerdem wollte ich das die Domain „$domain“ oder „domain“ per SESSION an ein Formular übergeben wird. Der Ausgabetext das die Domain noch frei ist oder nicht soll aber nur angezeigt werden, wenn die SESSION aufgerufen wird. Nur leider ist es im Moment so, dass er angezeigt wird, wenn ich das erste mal nach einer Domain gesucht habe.
Ich habe deswegen mal das „“ eingegeben und bekam folgende Meldung. (Original Script): “ Notice: Undefined index: domain in xxx.php on line 40
Die eingegebene Domain ist fehlerhaft. Bitte überprüfen Sie Ihre Schreibweise: domain.tld“
Zeile 40: $domain = strip_tags(trim(strtolower($_POST[‚domain‘])));
Es wäre schön, wenn Du mir da helfen könntest.
Liebe Grüße
Andre
Wenn du im Script über
$domain = strip_tags(trim(strtolower($_REQUEST[‚domain‘])));
das hier setzt
$_REQUEST[‚domain‘] = ‚testdomain.de‘;
dann kannst du doch die Domain abfragen.
Nun musst du nur noch statt testdomain.de eine Variable einsetzen die du mit POST eintragen kannst.
Der angezeigte Text war leider nicht ganz vollständig…
Ich habe deswegen mal das “ error_reporting(E_ALL); “ eingegeben. und bekam folgende
Wie habt ihr das mit den Whois Abfragen für weitere TLD gemacht?
Ich habe die ‚ch‘ => ‚whois.nic.ch‘ eingetragen und erhalte leider immer die Meldung das die Domain verfügbar ist.
Um alle Top Level Domains zu unterstützen kann man diese Whois API nutzen. Einen PHP client findet man hier: https://github.com/whois-server-list/whois-api-php
Hallo Profis,
das Script bzw. die Abfrage funktioniert bei mir nicht, kann es sein das Aufgrung der neuen DSGVO eine Abfrage der Domains nicht mehr möglich ist?
Gruss André
Ich komme immer noch nicht mit dem Formular klar.
Wie würde dieses aussehen?
de
com
at
Hi Hansjörg,
das Script ist schon etwas älter und muss ggf. weiter angepasst werden.
Leider können wir so eine Hilfe nicht hier im Blog über die Kommentare leisten, falls hier Interesse besteht unterstützen wir gerne im Rahmen unserer Agentur-Leistungen:
https://www.pascal-bajorat.com/
Beste Grüße
Pascal