| | (1) Zuerst einmal basteln wir uns ein hundsgewöhnliches Formular, zwecks Abfrage der Domain. Das hier vorgestellt Interface soll .de, .lu, .com, .net, .org -Domains abfragen können.
<!--- WHOIS-Interface Start--->
<table border="0" width="600">
<tr>
<td width="130" valign="middle" align="left">
<b>Domainabfrage:</b>
</td>
<td width="283" valign="top" align="left">
<form action="<? echo $PHP_SELF ?>" method="POST" target="_self">
<b>www.
<input type="text" name="domainname" size="17">
<select name="endfix" size="1">
<option name="de" value=".de">.de
<option name="com" value=".com">.com
<option name="net" value=".net">.net
<option name="org" value=".org">.org
<option name="lu" value=".lu">.lu
</select></b>
<td width="88" valign="top" align="left">
<b><input type="submit" name="submit" value="senden"></b>
</td>
<td width="121" valign="top" align="left">
<b><input type="reset" value="löschen"></b>
</td></form>
</tr>
</table>
<!--- WHOIS-Interface Ende --->
Dieses Formular stellt eine Domainabfrage dar. Der eingetragene Suchbegriff wird in der Variablen "domainname" gespeichert, und per "post" an die selbe Seite ("$PHP_SELF) "onSubmit" geschickt. Die "select-Option" bietet die Möglichkeit, die gewünschte Domain-Endung an den Suchbegriff anzuhängen. Die TLD wird in der Variablen "endfix" gespeichert, und mit "Domainnamen" "onSubmit" an die selbe Seite geschickt.
(2) Das PHP-Skript:
Erstmal wird die Seite auf "non-cacheable" gesetzt. Dieses geschieht noch vor irgendeinem anderem html-Befehl.
<?
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
?>
Nun wird mittels
if (isset($submit)) {
geprüft, ob schon einmal der Submit-Button gedrückt wurde (d.h., ob eine Suchanfrage vorliegt) oder nicht. Wenn noch keine Suchanfrage vorliegt, wird das oben beschriebene Formular ausgegeben, andernfalls, wenn die Variable $submit auf true gesetzt ist, wird die nachfolgende Funktion abgearbeitet.
Die Funktion überprüft nun erstmal mittels einer einfachen Switch-Abfrage, auf welchen Wert die Variable $endfix gesetzt wurde
switch ($endfix) {
case '.de':$id=1;break;
case '.com':$id=2;break;
case '.net':$id=3;break;
case '.org':$id=4;break;
case '.lu':$id=5;break;
default:echo("Fehler !\n");break;
}
$domain=($domainname."".$endfix."");
Hier wird dann die Variable $id gesetzt, die im späteren Skript dazu dient, den richtigen Dienst abzufragen. Dann wird noch schnell die abzufragenden Domain aus "domainname" und "endfix" zusammengesetzt.
Nun werden jeder $id eine Abfrage mittels if-else zugeordnet:
if ($id==1) {
$WhoIsServer="whois.ripe.net";
$fp = fsockopen ("$WhoIsServer", 43, $errnr, $errstr);
set_socket_blocking($fp,0);
fputs($fp, "$domain\n");
while (!feof($fp)) {
$result = fgets($fp, 2048);
if (substr("$result" ,2, 16) == "No entries found") {
printf("<table border=1 width=640><tr>");
printf("<td><b>Die von Ihnen abgefrage Domain $domain ist noch frei!</b></td></tr></table>");
}
else if (substr("$result" ,0, 7) == "domain:") {
printf ("<table border=1 width=640><tr>");
printf ("<td>><b>Die von Ihnen abgefrage Domain $domain ist leider schon vergeben.</b><br>");
printf ("<b>Möchten Sie die technischen Daten der Domain sehen?
<a href='$PHP_SELF?actio=show&WhoIsServer=$WhoIsServer
&domain=$domain' target='_self'>JA</a> /
<a href='#' target='_self'>NEIN</a></b>
</td></tr></table>");
}
}
fclose($fp);
}
In der ersten if-Möglichkeit wird der Server whois.ripe.net abgefragt. Es wird mittels pointer fp über fsockopen eine Verbindung aufgebaut, und der Suchbegriff wird übermittelt.
Anschließend wird das Rückgabeergebnis mittels While-Schleife ausgelesen und ausgewertet. Ist die Domain nicht mehr frei, gibt es die Möglichkeit, die Daten der Domain auszulesen. Hier kann der Benutzer über (ja/nein) auswählen, ob er genaue Daten zur Domain ansehen will. Will er das, so wird die weiter unten aufgeführte Funktion "showtime" aufgerufen. Andernfalls geht's zurück.
|