Jeg prøver at lave et script der skal kunne finde domæner på 3 bogstaver og tjekke om de er ledige?
Jeg har en lookup funktion:
<?php
<?php
if ($_POST['dom'])
{
$dom = $_POST['dom'].$_POST['suffix'];
$whoisresult = lookup($dom);
print $whoisresult;
}
function get_whois_server($domain)
{
$whoisservers = array(array('de','whois.denic.de'),
array('com','rs.internic.net'),
array('net','rs.internic.net'),
array('org','whois.networksolutions.com'),
array('info','whois.afilias.net'),
array('biz','whois.biz'),
array('at','whois.nic.at'),
array('ch','whois.nic.ch'),
array('li','whois.nic.ch'),
array('co.uk','whois.nic.uk'),
array('tv','whois.<a href = "http://www.tv" target = "_blank">www.tv</a>'),
array('cc','whois.enicregistrar.com'),
array('dk','whois.dk-hostmaster.dk'),
array('it','whois.nic.it'),
array('ws','whois.worldsite.ws'));
$whocnt = count($whoisservers);
for ($x = 0;$x<$whocnt;$x++)
{
$artld = $whoisservers[$x][0];
$tldlen = intval(0 - strlen($artld));
if (substr($domain, $tldlen) == $artld) $whosrv = $whoisservers[$x][1];
}
return $whosrv;
}
function lookup($dom)
{
$lusrv = get_whois_server($dom);
if (!$lusrv) return '';
$fp = fsockopen($lusrv,43);
fputs($fp,$dom."\\r\\n");
$string = '';
while(!feof($fp))
{
$string .= fgets($fp,128);
}
fclose($fp);
$reg = "/Whois Server: (.*?)\\n/i";
preg_match_all($reg, $string, $matches);
$secondtry = $matches[1][0];
if ($secondtry)
{
$fp = fsockopen($secondtry,43);
fputs($fp, $dom."\\r\\n");
$string = '';
while(!feof($fp))
{
$string .= fgets($fp,128);
}
fclose($fp);
}
if(ereg('(No match|No entries found|NOT FOUND|Not found)',$string))
{
// Meddelse ved frit domæne
echo '<br><br><br><span class=frit_domain><b><img src="available.gif" alt="ok"> Domænet: '.$dom.' er ledigt</</b></span>';
}else{
// Meddelse ved optaget domæne
echo '<b>Domænet: '.$dom.' desværre optaget</b>';
$whois = $string;
return $whois;
}
}
?>
Nogen der kan hjælpe med det med at få den til at sætte mulige combinationer sammen, og tjekke om de er ledige?
Vil du tjekke alle kombinationer? Altså aaa, aab, aac ... zzx, zzy, zzz?
Så kan du gøre noget lig. nedenstående (vær opmærksom på, at jeg ikke har taget højde for optimering af hastigheden):
// Gennemgår alle mulige "bogstav-kombinationer", inden for længden $domlen - i dit tilfælde skal du kalde denne funktion med 3, da du ønsker domæner på 3 bogstaver
function loopDomains($domlen)
{
// Opret et array, som "sammenkæder" talrækken med bogstaver"
$alphabet = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z');
// Find antallet af mulige kombinationer
$letters = pow(count($alphabet), $domlen) - 1;
for($x = $letters; $x >= 0; $x--)
{
// Klargør et array, som skal indeholde domænet
$dom = array();
$prev = 0;
// Hent bogstaverne i domænet, baseret på talværdien x
for($i = $domlen; $i > 0; $i--)
{
$dom[($domlen - $i)] = $alphabet[count($alphabet) - floor(($x - $prev) / pow(count($alphabet), $i-1))-1];
$prev += floor(($x - $prev) / pow(count($alphabet), $i-1))*pow(count($alphabet), $i-1);
}
// Saml bogstaverne til en streng
$domstring = "";
foreach($dom as $domltr)
$domstring .= $domltr;
// Gør hvad end du vil med domænet her ($domstring)
echo $domstring . "<br>";
}
}
loopDomains(3);
Håber du kan bruge dette, men vær opmærksom på, at du skal tjekke omkring 17000 domæner, hvis du tjekker alle domæner med 3 bogstaver - dette vil muligvis tage sin tid?