Domain-Check

CreativPur

Erfahrenes Mitglied
Hi,

ich habe ein PHP-Script für ein Domain-Check.
Nun versuche ich seit Tagen das dazu passende Formular zu schreiben.
Leider hapert es an dieser stelle. Zumindest funktioniert es nicht.

Das PHP-Script

PHP:
<?php if(preg_match('/\Ahttps?:\/\/([-\w\.]+)+(:\d+)?(\/([\w\/_\.]*(\?\S+)?)?)?\Z/', 'http://'.$_POST['domain'])) // URL auf validität überprüfen.
{
  $whois=array(); // Array initialisieren. Es folgen Deklarationen des mehrdimensionalem Arrays.
  $whois['.de']['server']='whois.denic.de';
  $whois['.de']['string']='Status:      free';
  $whois['.com']['server']='whois.crsnic.net';
  $whois['.com']['string']='No match for';
  $whois['.net']['server']='whois.crsnic.net';
  $whois['.net']['string']='No match for';
  $whois['.org']['server']='whois.publicinterestregistry.net';
  $whois['.org']['string']='NOT FOUND';
  $whois['.info']['server']='whois.afilias.net';
  $whois['.info']['string']='NOT FOUND';
  $whois['.biz']['server']='whois.nic.biz';
  $whois['.biz']['string']='Not found';
  $whois['.ag']['server']='whois.nic.ag';
  $whois['.ag']['string']='NOT FOUND';
  $whois['.am']['server']='whois.nic.am';
  $whois['.am']['string']='No match';
  $whois['.as']['server']='whois.nic.as';
  $whois['.as']['string']='Domain Not Found';
  $whois['.at']['server']='whois.nic.at';
  $whois['.at']['string']='nothing found';
  $whois['.be']['server']='whois.dns.be';
  $whois['.be']['string']='Status:      FREE';
  $whois['.cd']['server']='whois.cd';
  $whois['.cd']['string']='No match';
  $whois['.ch']['server']='whois.nic.ch';
  $whois['.ch']['string']='not have an entry';
  $whois['.cx']['server']='whois.nic.cx';
  $whois['.cx']['string']='Status: Not Registered';
  $whois['.dk']['server']='whois.dk-hostmaster.dk';
  $whois['.dk']['string']='No entries found';
  $whois['.it']['server']='whois.nic.it';
  $whois['.it']['string']='Status: AVAILABLE';
  $whois['.li']['server']='whois.nic.li';
  $whois['.li']['string']='do not have an entry';
  $whois['.lu']['server']='whois.dns.lu';
  $whois['.lu']['string']='No such domain';
  $whois['.nu']['server']='whois.nic.nu';
  $whois['.nu']['string']='NO MATCH for';
  $whois['.ru']['server']='whois.ripn.net';
  $whois['.ru']['string']='No entries found';
  $whois['.uk.com']['server']='whois.centralnic.com';
  $whois['.uk.com']['string']='No match for';
  $whois['.eu.com']['server']='whois.centralnic.com';
  $whois['.eu.com']['string']='No match';
  $whois['.ws']['server']='whois.nic.ws';
  $whois['.ws']['string']='No match for';

  $domain=str_replace('www.', '', $_POST['domain']); // Solche Dinge sind Detailssache (..)  Letztlich muss die Anfrage an den WHOIS-Server ohne http::// , www. usw. stattfinden. -> Nur Domainname und Domainendung.

  if(get_magic_quotes_gpc==0)
  {
    $domain=addslashes($domain);
  }

// Verbindung zum whois server aufbauen / Status der Domain erfragen.

 $check=fsockopen($whois[$_POST['tld']]['server'], 43);
  fputs($check, $domain.$_POST['tld']."\r\n");
  while(!feof($check)) 
  {
    $report=$report.fgets($check, 128);
  }
  fclose($check);
  
  if(ereg($whois[$_POST['tld']]['string'], $report)) // Was soll geschehen, wenn domain noch frei ist?
  {
    print('domain frei.');
  }
  else // Was, wenn nicht?
  {
    print('domain nicht frei.');
  }
}
?>

Das Formular

HTML:
<form action="#" method="post">

<input name="domain" type="text" size="30" />&nbsp;&nbsp;<input name="server" type="text" size="5" />
<br />
<input name="" type="submit" />


</form>

Kann mir da jemand helfen ?
Vielen Dank
 
Lösung
Ich habe es jetzt folgend gelöst..

PHP:
<form action="" method="post">
<table width="200" border="0" align="center">
  <tr>
    <td colspan="3" align="center">Wählen Sie Ihre Wunsch-Domain<br /><span style="font-size:12px; color:red;">(ohne www.)</span><hr /></td>
    </tr>
  <tr>
    <td width="20"><input type="text" name="domain_name" /></td>
    <td width="5%">
    <select name="ubhbz">
<option value=".de">.de</option>
<option value=".com">.com</option>
<option value=".info">.info</option>
<option value=".net">.net</option>
<option value=".org">.org</option>
</select>
    </td>
    <td width="5%"><input type="submit" name="check" value="Check" /></td>
  </tr>
</form>

<div align="center">
<?php

echo '<tr align="center">
    <td...
Hi,

PHP:
function domainExists($name) {
  $res = dns_get_record($name,  DNS_SOA);
  return $res !== FALSE && count($res) > 0;
}

Das Schnippsel bietet dir eine Funktion, mit der du dann einen If-Block schreiben kannst.

PHP:
if(domainExists("foo.bar")) {
  echo "Gibts schon";
} else {
  echo "Gibts noch nicht";
}

(Ungetestet)

Grüsse,
BK
 
@Bratkartoffel wie funktioniert so ein Script eigentlich ?
Weil bei nomalen Adressen scheint es ja zu funktionieren.
Wenn ich aber zb bei bplaced.net mein webseite anfrage sagt er es gibt die nicht .
Muß man dafür wieder einen anderen Code benutzen oder so ?
 
Ich habe es jetzt folgend gelöst..

PHP:
<form action="" method="post">
<table width="200" border="0" align="center">
  <tr>
    <td colspan="3" align="center">Wählen Sie Ihre Wunsch-Domain<br /><span style="font-size:12px; color:red;">(ohne www.)</span><hr /></td>
    </tr>
  <tr>
    <td width="20"><input type="text" name="domain_name" /></td>
    <td width="5%">
    <select name="ubhbz">
<option value=".de">.de</option>
<option value=".com">.com</option>
<option value=".info">.info</option>
<option value=".net">.net</option>
<option value=".org">.org</option>
</select>
    </td>
    <td width="5%"><input type="submit" name="check" value="Check" /></td>
  </tr>
</form>

<div align="center">
<?php

echo '<tr align="center">
    <td colspan="3">';
    
    if(isset($_POST['check'])) {
 
 if (!empty($_POST['domain_name'])){
 $name_domain = trim($_POST['domain_name']).$_POST['ubhbz'];
 $response = @dns_get_record($name_domain, DNS_ALL);
 if(empty($response)){
 echo "<hr /><span style='font-size:13px;'><span style='color:blue;'>www.$name_domain</span> ist noch <span style='color:green;'>frei</span>.</span>";
 
 }else{
 echo "<hr /><span style='font-size:13px;'><span style='color:blue;'>www.$name_domain</span> ist schon <span style='color:red;'>vergeben</span>.</span>";
 }
 }
 else {
 echo "<p style='color:red;'>Geben Sie bitte einen Domain-Namen ein.</p>";
 }
}
echo '   
    </td>
    </tr>
</table>';

?>
</div>
 
Lösung
@Bratkartoffel wie funktioniert so ein Script eigentlich ?
Weil bei nomalen Adressen scheint es ja zu funktionieren.
Wenn ich aber zb bei bplaced.net mein webseite anfrage sagt er es gibt die nicht .
Muß man dafür wieder einen anderen Code benutzen oder so ?

Also bei mir sagt er, die gibts (folgender Code, getestet auf http://phptester.net/
PHP:
<?php
function domainExists($name) {
  $res = dns_get_record($name,  DNS_SOA);
  return $res !== FALSE && count($res) > 0;
}

if(domainExists("bplaced.net")) {
  echo "Gibts schon";
} else {
  echo "Gibts noch nicht";
}

Es könnte sein, dass dein Hoster DNS Anfragen blockiert, resp. die Funktion "dns_get_record" deaktiviert hat.

Grüsse,
BK
 
Zurück