Problem:
Ich möchte eine Domainabfrage (Whois) auf meiner Webseite einbauen.
Lösung:
Die ECS Robot-API erlaubt ein Whois über zahlreiche TLD, darunter auch .de, .com.
Hinweis:
Die API steht nur Kunden der ECS-Webhosting zur Verfügung!
Code:
<?php
// API-Aufrufe via CURL:
function CurlPost($sURL,$sMessage)
{
$ch = curl_init($sURL);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_URL, $sURL);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $sMessage);
$result = curl_exec($ch);
curl_close ($ch);
return $result;
}
// Eingabe: domain_name = Domainname
// Rückgabe: TRUE|FALSE
// TRUE = Domain frei oder Whois antwortet nicht / nicht verfügbar
// FALSE = Domain vergeben
function whois($domain_name)
{
// Whois per API aufrufen:
$body = array("task" => "DOMAIN.WHOIS",
"auth_login" => "IHR-WEBSERVERCONFIG-BENUTZER",
"auth_password" => "IHR-WEBSERVERCONFIG-KENNWORT",
"domain" => $domain_name
);
$result = CurlPost("http://robot.ecs-webhosting.de/",$body);
// In $result steht das Whois als XML. Dieses parsen wir jetzt:
$parser = xml_parser_create();
xml_parse_into_struct($parser,$result,&$data_ar,&$index_ar);
$i = 0;
foreach ($data_ar as $element)
{
if (!preg_match("/^\s+$/",$element[value]))
{
$tag = $element[tag];
$wert[$i][strtolower($tag)] = $element[value];
}
}
$whoisraw = "<pre>" . $wert[0]["whoisraw"] . "</pre>";
// coming soon, derzeit noch leer:
$whoishtml = $wert[0]["whoishtml"];
// Korrigierter Domainname:
// Vorher: $domain_name = www.Beispiel_Domain.de
// Nachher: $domain_name = beispiel-domain.de
$domain_name = $wert[0]["sld"] . "." . $wert[0]["tld"];
xml_parser_free($parser);
switch ($wert[0]["code"])
{
case "NO-WHOISSERVER":
print "Für die TLD " . $wert[0]["tld"] . " ist uns kein Whois-Server bekannt!";
return(TRUE);
break;
case "NO-ANSWER-FROM-WHOIS":
print "Der Whois-Server antwortet nicht!";
return(TRUE);
break;
case "AVAILABLE":
print "Die Domain " . $domain_name . " ist verfügbar!";
return(TRUE);
break;
case "REGISTERED":
print "Die Domain " . $domain_name . " ist leider bereits vergeben!<p>
<strong>Whois:</strong><p>
$whoisraw";
return(FALSE);
break;
}
}
?>