Whois Abfrage mehrerer TLDs

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Whois Abfrage mehrerer TLDs

    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:
    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%">&nbsp;</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
    selfmade-webdesign
    webdesign leipzig

  • #2
    problembeschreibung fehlt.

    Kommentar


    • #3
      Problembeschreibung?
      Ok nochmal genauer, dieser Code fragt, so wie er jetzt ist, einwandfrei eine Domainabfrage wie z.B. domain.de beim zuständigen Whois-Server ab.
      Ich möchte aber die Abfrage so verändern, dass mit der Domainabfrage domain.de gleichzeitig auch z.b. die domain.ag, domain.com, domain.net, etc. mit abgefragt werden und dessen Status (frei oder belegt) angezeigt wird.
      Ich denke mir, dass es mit Sicherheit nur mit einer while schleife und darin ein Timeout von z.b. 20sek (für den Fall ein Whois-Server braucht ewig für eine Antwort) geht. Mein Problem ist, dass ich mir nicht im Klaren bin, wo und wie ich die While-Schleife einbauen soll, damit alle Whoisserver aus dem Array abgefragt werden.
      Das Skript kannst du gern testen. Ich habe im 1. Beitrag ein Link zu Seite gesetzt. Der Code oben ist das komplette Skript.

      Vielleicht hast du ja eine Idee @penizillin
      selfmade-webdesign
      webdesign leipzig

      Kommentar


      • #4
        du hast nicht die leiseste ahnung, wie das funktioniert, oder? du würdest dir selbst einen großen gefallen tun, wenn du die aufgabe einem fachmann überlässt.

        Kommentar


        • #5
          ich dachte hier findet man tip bzw hinweise auf eine lösung, sprich einen lösungsansatz. wenn ich einen "fachmann" wollte, hätte ich sicher schon telefoniert. ich möchte es aber selbst lösen, zwar mit hilfe, aber dafür weiß ich es beim nächsten mal selbst.
          ich meine es ist doch net schlimm sich gewisse sachen anzueignen und lernen zu wollen. ich möchte es ja nicht geschrieben haben von dir.
          ich möchte ja "nur" einen lösungsansatz auch wenn diese sache so komplex ist
          googlen hilft mir ja auch nicht weiter
          ich hoffe du hast einen lösungsvorschlag aber bitte nicht so einen wie den letzten, denn der hilft mir nun wirklich nicht
          selfmade-webdesign
          webdesign leipzig

          Kommentar

          Lädt...
          X