Anzeige
Tutorialbeschreibung

DomainCheck mit PHP

DomainCheck mit PHP

In diesem Tutorial möchte ich euch ein Script vorstellen, das 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.


Dieses Tutorial stammt aus der Tutorial-Reihe von www.webdesign-podcast.de

<?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 &uuml;berpr&uuml;fen Sie Ihre Schreibweise: domain.tld';
// Fehlermeldung, wenn diese TopLevelDomain 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, dass 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]."
");
	$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&ouml;nnen die Domain f&uuml;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&ouml;chten Sie eine andere Domain-Kombination ausprobieren?';
	}
}else{
	// Fehlermeldung, wenn der Inhalt der Variable $domain leer ist:
	echo $WrongDomain;
}
?>


DVD-Werbung
Kommentare
Achtung: Du kannst den Inhalt erst nach dem Login kommentieren.
Portrait von xpbemo
  • 17.08.2013 - 17:22

Hallo Pascal,

der Beitrag ist zwar schon etwas älter, hat mir aber trotzdem sehr geholfen.

Vielen Dank. :-)

Viele Grüße
Bernd

P.S. An alle, die hier die negativen Komentare abgegeben haben: Ihr solltet eure Scripts am besten selber schreiben und über die Arbeit von anderen meckern. Das ist nicht nur unhöflich, dass ist eine Frechheit.

Portrait von harryberd
  • 17.04.2013 - 16:44

In der Zeile:
'com' = 'whois.crsnic.net||no match for'
das no durch No ersetzen dann klappt es auch mit der com-domain :-)

Und hier auch noch ein paar weitere Server:
'eu' = 'whois.eu||AVAILABLE',
'info' = 'whois.afilias.net||NOT FOUND',
'net' = 'whois.internic.net||No match for',
'biz' = 'whois.neulevel.biz||Not found',
'org' = 'whois.pir.org||NOT FOUND'

btw:
oma-schmidt-tanzt-im-kreis.de funktioniert bei mir auch!!!

Portrait von MediaCorporation
  • 25.01.2012 - 21:37

Sehr schön, genau soetwas habe ich schon lange gesucht... Dankeschön für dein Tut - Werd mich gleich mal Morgen damit beschäftigen :)

Portrait von ghost_of_darkness
  • 12.11.2011 - 01:25

Hallochen,

ich kann die negativen Kommentare nicht verstehen. Ich habe mir gerade den Script mal angeschaut und finde dass er gut gemacht ist.

Für diejenigen, die nicht wissen wie sie die Domain eingeben können empfehle ich hinter den Dateinamen ?domain=“hier den Domainnamen“ einzugeben und schon klappt es.

Nach meiner Meinung sind die Punkte definitiv nicht vergebens.

Portrait von arnieparnie
  • 20.05.2011 - 16:04

Klasse Tut...kann die negativen Kommentare nicht nachvollziehen!!!
Vielen Dank und weiter so!!!

Portrait von fabi29
  • 30.01.2011 - 20:25

obwohl ich den code in keinem projekt brauche war es trotzdem informativ, wie solch eine Abfrage verfäuft :)

Portrait von whoch3
  • 13.11.2010 - 14:50

Ein nett gemeintes Script, doch es scheint nicht wirklich zu funktionieren. Jedenfalls bekomme ich Meldungen, dass einige Domains vergeben sind, diese aber in Wirklichkeit frei sind. Zum Beispiel: "www.oma-schmidt-tanzt-im-kreis.de" ist vergeben. Achja?

Portrait von Pascal Bajorat
  • 13.11.2010 - 14:54

Hi ich habe das ganze gerade mit der Domain durchlaufen lassen, bei mir gibt es keine Probleme:
Rückmeldung des Scripts: Die Domain oma-schmidt-tanzt-im-kreis.de ist noch nicht vergeben. Wir können die Domain für Sie registrieren.

Portrait von Pascal Bajorat
  • 12.11.2010 - 12:25

Hallo, nach den vielen negativen Kommentaren wollte ich mich dann auch mal zu Wort melden:

Ich kann euren Frust verstehen, ich hätte dazu schreiben sollen das Grundkentnisse in PHP vorhanden sein sollten um dieses Tutorial nachvollziehen zu können.

Tut mir an dieser Stelle leid, allerdings sind Kommentare wie:
Kein Wort dazugeschrieben, und selbst die Einleitung ist kryptisch. Ein Zusammenhangloser Codeschnipsel war mir also 3 Mitgliederpunkte wert. Traurig!

sehr enttäuschend, denn auch wenn es euch nicht gefallen hat (bzw. ihr es nicht verstehen konntet da euch die Basis fehlt) steckt in dem Script meine Zeit die ich mir für EUCH genommen habe um es zu kommentieren. So etwas sollte vielleicht auch in betracht gezogen werden, bevor ein Tutorial / Script völlig heruntergezogen wird.

Des Weiteren beweist gerade dieser Kommentar, dass wirklich überhaupt kein Basiswissen da war:
"Kein Wort dazugeschrieben" - Die grünen Zeichen sind Kommentare da steht wie das Script funktioniert

"Codeschnipsel" - Ähm nein das Script ist komplett und funktionstüchtig. Wenn du ein wenig HTML kannst sollte es dir möglich sein es einzubauen.

Wenn nicht einmal HTML Kentnisse vorhanden sind Frage ich mich warum du dann ein PHP Tutorial verstehen willst?!

Hättet ihr konkrete Fragen gestellt, hättet ihr auch davon ausgehen können, dass ihr von mir entsprechende Hilfe bekommen hättet und das sollten alle Wissen die schon einmal eine Frage zu einem Tut von mir hatten.

Ich könnte auch zurück schießen und sagen, naja wenn ihr überhaupt kein Basiswissen von der Materie habt, dann versucht euch nicht an diesen doch eher komplexeren Sachen.

Aber das führt zu weit, beim nächsten mal werde ich entsprechend auf benötigtes Basiswissen hinweisen. An dieser Stelle entschuldige ich mich dann bei allen, die das Script nicht verstanden haben für die verbrauchten Punkte.

Wer ernsthaft Interesse an dem Script hat und noch Fragen offen sind, darf sich gerne per PM bei mir melden.

Portrait von Zahnerer
  • 12.11.2010 - 11:46

Wenn jetzt hier noch etwas mehr erklärt wäre und das Ganze vollständig wäre, dann würde ich auch 3 Sterne vergeben. Ich schließe mich unten stehender Meinung an freue mich auf bessere Tutorials.

Portrait von Pascal Bajorat
  • 12.11.2010 - 11:49

Was ist den für dich unvollständig? Wenn du das Script so kopieren würdest, dann würde es ohne Probleme laufen

Portrait von us62
  • 08.11.2010 - 02:09

Leider ziemlich unbrauchbar. Nicht mal ein Eingabefeld für eine Domain ist vorhanden. Tutorials sehen anders aus. Ich war auch noch so blöd die Arbeitsdaten runterzuladen. die besteht genau aus dem selben Code (nur halt ohne Zeilennummern).

Was schlechteres hab ich hier noch nicht gefunden.

Portrait von lucky61
  • 07.11.2010 - 00:04

Ich werde es ausprobieren, habe schon länger vor, einen Domaincheck einzubauen.

Portrait von Cesc
  • 06.11.2010 - 21:45

danke hat mir wirklich sehr weit geholfen :)

Portrait von nada00
  • 06.11.2010 - 13:24

ja ne schade um die 3 punktre aber da kann man nix machen würde ich sagen ..... Ps: zum glück sind es net mehr wie 3 Punkte gewesen :-)

Portrait von GrischaRomen
  • 06.11.2010 - 12:17

Kein Wort dazugeschrieben, und selbst die Einleitung ist kryptisch.

Ein Zusammenhangloser Codeschnipsel war mir also 3 Mitgliederpunkte wert. Traurig!

Portrait von Aelfry
  • 06.11.2010 - 12:10

ich muss mich wohl leider romox anschließen. ein tutorial ist das hier nicht wirklich (es wird überhaupt nichts zum code erklärt), eher nur ein codeschnipsel

Portrait von romox
  • 06.11.2010 - 11:58

Naja, Copy&Paste kann jeder.
Außerdem besteht das Web nicht nur aus de, at und com. Die Prüfung von .co.uk oder .com.ua kann man gleich vergessen.

Portrait von Pascal Bajorat
  • 12.11.2010 - 11:52

Nein die kann man nicht vergessen, sondern erweitern, dafür ist das ganze ja ein Array ;-)

x
×
×