Hallo und Frohe Ostern euch noch.
Zu meinem Problem: Ich möchte via Whoisabfrage mehrere TLD-Domainendungen gleichzeitig abfragen. Ich habe das folgende Skript schon an meine Bedürfnisse angepasst bis auf dieses Problem. Ich bin mir sicher, dass ich eine While-Schleife mit timeout benötige, jedoch ist mir nicht klar wo ich diese am besten einsetze damit das gewünschte Ergebnis ans Licht kommt. Ich hoffe mir kann jemand einen guten Rat geben.
Einzeln funktioniert die Abfrage einwandfrei. Hier Testen
Hier mal mein scheinbar endloser Code:
Zu meinem Problem: Ich möchte via Whoisabfrage mehrere TLD-Domainendungen gleichzeitig abfragen. Ich habe das folgende Skript schon an meine Bedürfnisse angepasst bis auf dieses Problem. Ich bin mir sicher, dass ich eine While-Schleife mit timeout benötige, jedoch ist mir nicht klar wo ich diese am besten einsetze damit das gewünschte Ergebnis ans Licht kommt. Ich hoffe mir kann jemand einen guten Rat geben.
Einzeln funktioniert die Abfrage einwandfrei. Hier Testen
Hier mal mein scheinbar endloser Code:
PHP-Code:
$dateiname = "domaincheck.php";
$abfrage['error'] = "<span style='color:blue'>Fehler</span>";
$abfrage['wech'] = "<span style='color:red'>belegt</span>";
$abfrage['frei'] = "<span style='color:green'>frei</span>";
$get_domain = 0;
$this_domain = "domain.de";
if($_REQUEST['domain']){
$get_domain = 1;
$this_domain = $_REQUEST['domain'];
$this_domain = preg_replace("=^(www\.)=i","",$this_domain);
if(!preg_match("[\.]",$this_domain))$this_domain = $this_domain.".de";
}
if($get_domain == 1){
$domain = new domain($this_domain);
$abfrage['reg_de'] = 0;
$abfrage['de1'] = $domain->get_domain();
$abfrage['de2'] = $abfrage['error'];
if($domain->is_valid())
{
$abfrage['de2'] = $abfrage['wech'];
if($domain->is_available()){$abfrage['de2'] = $abfrage['frei'];}
}
$domain_html_info = $domain->html_info();
if($domain->is_available())
{
### HTML-Code Ergebnis der Whois-Abfrage ###
$whois = '<h4>Ergebnis Ihrer Abfrage: '.$this_domain.'</h4>Status = '.$abfrage['de2'].'
<br /><br />';
##################
}
else
{
### HTML-Code Ergebnis der Whois-Abfrage ###
$whois = '<h4>Ergebnis Ihrer Abfrage: '.$this_domain.'</h4>Status = '.$abfrage['de2'].'
<br /><br />';
##################
}
$tlds=$domain->get_tlds();
$content_tld .= "
<table width=\"100%\" border=\"0\">
<tr>
<td width=\"45%\" valign=\"top\" align=\"left\">
Domainname</td>
<td width=\"15%\" valign=\"top\" align=\"center\">
Status
</td>
<td width=\"20%\" valign=\"top\" align=\"right\">
Preis pro Jahr
</td>
<td width=\"20%\" valign=\"top\" align=\"right\">
Whoisabfrage</td>
</tr>
</table>
<hr noshade size=\"2\" style=\"color: 000000\" width=\"100%\">";
for($i=0;$i<count($tlds);$i++){
$i%2==0 ? $farbe = "#164056" : $farbe = "#000000";
$content_tld .= "
<table width=\"100%\" border=\"1\" bordercolor=\"silver\">
<tr>
<td width=\"45%\" valign=\"top\" align=\"left\">
<a href='./".$dateiname."?domain=".$abfrage['de1'].".".$tlds[$i]."'>
<span style='font-weight:". $bold .";color:". $farbe ."'>".$abfrage['de1'].".<b>".$tlds[$i]."</b></span></a><br>
</td>
<td width=\"15%\" valign=\"top\" align=\"center\">
in Arbeit
</td>
<td width=\"20%\" valign=\"top\" align=\"right\">
$domainpreis EURO
</td>
<td width=\"20%\" valign=\"top\" align=\"right\">
<a href='./whois.php?domain=".$abfrage['de1'].".".$tlds[$i]."' target='_blank'>
<span style='font-weight:". $bold .";color:". $farbe ."'>Whois</span></a><br>
</td>
</tr>
</table>";
}
}
##################
### HTML-Code der Seite
$content = ''.$whois.$content_tld.'</div>';
### Output
echo $content;
?>
</td>
</tr>
</table>
</td>
<td width="5%"> </td>
<td width="20%" align="right" valign="top">
<? include "include/rechts.html"; ?>
</td>
</tr>
</table>
<br>
<?
include "include/fuss.html";
?>
</html>
<?
$tlds=array(
...
array("de","whois.denic.de","not found"),
array("eu","whois.eu","No match"),
...
);
class domain{
var $domain="";
var $servers=array(
...
array("de","whois.denic.de","not found"),
array("eu","whois.eu","No match"),
...
);
function domain($str_domainname)
{
$this->domain=$str_domainname;
}
#function info()
function info()
{
if($this->is_valid())
{
$tldname=$this->get_tld();
$domainname=$this->get_domain();
$whois_server=$this->get_whois_server();
if($whois_server!="")
{
$fp = @fsockopen($whois_server,43,$errno, $errstr, 5);
if(!$fp)return false;
$dom=$domainname.".".$tldname;
//fputs($fp, "$dom\r\n");
if($tldname=="de")
{
fputs($fp, "-C ISO-8859-1 -T dn $dom\r\n");
}
else
{
fputs($fp, "$dom\r\n");
}
$string="";
if($tldname=="com" || $tldname=="net")
{
while(!feof($fp))
{
$line=trim(fgets($fp,128));
$string.=$line;
$lineArr=split(":",$line);
if(strtolower($lineArr[0])=="whois server")
{
$whois_server=trim($lineArr[1]);
}
}
$fp = @fsockopen($whois_server,43,$errno, $errstr, 5);
if(!$fp)return false;
$dom=$domainname.".".$tldname;
fputs($fp, "$dom\r\n");
$string="";
while(!feof($fp))
{
$string.=fgets($fp,128);
}
}
else
{
while(!feof($fp))
{
$string.=fgets($fp,128);
}
}
fclose($fp);
return $string;
}
else
{
return "No whois server for this tld in list!";
}
}
else
{
return "Domainname isn't valid!";
}
}
#function info() ende
function html_info()
{
return nl2br($this->info());
}
function get_whois_server()
{
$found=false;
$tldname=$this->get_tld();
for($i=0;$i<count($this->servers);$i++)
{
if($this->servers[$i][0]==$tldname)
{
$server=$this->servers[$i][1];
$full_dom=$this->servers[$i][3];
$found=true;
}
}
return $server;
}
function get_tld()
{
$domain=split("\.",$this->domain);
if(count($domain)>2)
{
$domainname=$domain[0];
for($i=1;$i<count($domain);$i++)
{
if($i==1)
{
$tldname=$domain[$i];
}
else
{
$tldname.=".".$domain[$i];
}
}
}
else
{
$domainname=$domain[0];
$tldname=$domain[1];
}
return $tldname;
}
function get_tlds()
{
$tlds="";
for($i=0;$i<count($this->servers);$i++)
{
$tlds[$i]=$this->servers[$i][0];
}
return $tlds;
}
function get_domain()
{
$domain=split("\.",$this->domain);
return $domain[0];
}
function get_fulldomain()
{
return $this->domain;
}
function get_notfound_string()
{
$found=false;
$tldname=$this->get_tld();
for($i=0;$i<count($this->servers);$i++)
{
if($this->servers[$i][0]==$tldname)
{
$notfound=$this->servers[$i][2];
}
}
return $notfound;
}
#function is_available()
function is_available()
{
$whois_string=$this->info();
$not_found_string=$this->get_notfound_string();
$domain=$this->domain;
$whois_string2=@ereg_replace("$domain","",$whois_string);
$whois_string =@preg_replace("/\s+/"," ",$whois_string);
$array=split(":",$not_found_string);
if($array[0]=="MAXCHARS")
{
if(strlen($whois_string2)<=$array[1])
{
return true;
}
else
{
return false;
}
}
else
{
if(preg_match("/".$not_found_string."/i",$whois_string))
{
return true;
}
else
{
return false;
}
}
}
#function is_available() ende
function get_cn_server($whois_text)
{
}
#function is_valid()
function is_valid()
{
$domainArr=split("\.",$this->domain);
if(count($domainArr)==3)
{
$tld=$domainArr[1].".".$domainArr[2];
$found=false;
for($i=0;$i<count($this->servers) && $found==false;$i++)
{
if($this->servers[$i][0]==$tld)
{
$found=true;
}
}
if(!$found)
{
return false;
}
}
else if(count($domainArr)>3)
{
return false;
}
if($this->get_tld()=="de")
{
for($i=0;$i<count($this->idn);$i++)
{
$idn.=chr($this->idn[$i]);
// $idn.="\x".$this->idn[$i]."";
}
$pattern="^[a-z".$idn."0-9\-]{3,}$";
}
else
{
$pattern="^[a-z0-9\-]{3,}$";
}
if(ereg($pattern,strtolower($this->get_domain())) &&
!ereg("^-|-$",strtolower($this->get_domain())) &&
!preg_match("/--/",strtolower($this->get_domain())))
{
return true;
}
else
{
return false;
}
}
#function is_valid() ende
}
# Skriptende
Kommentar