Avatar billede todoonada Nybegynder
28. oktober 2004 - 19:19 Der er 8 kommentarer og
2 løsninger

whois i php til .dk .com .net .org

Hej Eksperter,

Jeg er ved at lave et php script som skal kunne søge på dk/com/net/org domæner og se om de er ledige og derefter skal man kunne se hvem der ejer domænet.
Det kan det også men der kommer 2 fejl når den skal søge på alle domænerne:

Fejl 1:
Warning: file() expects parameter 1 to be string, array given in topdog_whois.php on line 218.

Fejl 2:
Warning: file("") - Bad file descriptor in topdog_whois.php on line 218

Fejl nummer et kommer kun ved .com domænet, hvor derimod fejl nummer 2 kommer ved .net og .org.

Link til script http://www.hededuhu.dk/whois/whois.html

Derudover er det ikke så hurtig, det ved jeg ikke om der er noget at gøre ved?


---------
html
---------
<html>
<head>
<title>Domain søg!</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<form method="post" action="whois.php">
    <input type="text" name="domain">
    <select size="1" name="ext">
    <option value="alt">Alle Domain</option>
    <option value="dk">.dk</option>
    <option value="com">.com</option>
    <option value="net">.net</option>
    <option value="org">.org</option>
    </select>
    <input type="hidden" name="option" value="check">
    <input type="submit" value="Test Dom&aelig;net!">
    </form>
</body>
</html>


---------
php
---------
<?php

//com, net
$intserver="whois.crsnic.net";
$intnomatch="No match for";

//org
$orgserver="whois.publicinterestregistry.net";
$orgnomatch="NOT FOUND";

//DK
$dkserver="whois.dk-hostmaster.dk";
$dknomatch="No entries found";

$template = "whois.html";
$registerlink = "signup.php";
$restrict = 0;

if ($_SERVER['REQUEST_METHOD'] == 'GET')
    {
    $domain = $_GET['domain'];
    $ext = $_GET['ext'];
    $option = $_GET['option'];
}
else
    {
    $domain = $_POST['domain'];
    $ext = $_POST['ext'];
    $option = $_POST['option'];
}

if ($restrict ==1)
    {
    check_referer();
}

    namecheck($domain);

if ($ext == "alt")
{
    $punkt = array("dk", "com", "net", "org");
    for($i=0; $i < sizeof($punkt);$i++)
    {
        $ext = $punkt[$i];
        if($ext=="com"||$ext=="net")
        {
        $server=$intserver;
        $nomatch=$intnomatch;
        }

        if($ext=="org")
        {
        $server=$orgserver;
        $nomatch=$orgnomatch;
        }

        if($ext=="dk")
        {
        $server=$dkserver;
        $nomatch=$dknomatch;
        }

        if($option=="check")
        {
        $layout = check_domain($domain,$ext);
        print_results($layout);
        }
        if($option=="whois")
        {
        whois($domain,$ext);
        }
    }
}
else
    {
    if($ext=="com"||$ext=="net")
    {
    $server=$intserver;
    $nomatch=$intnomatch;
    }
    if($ext=="org"){
    $server=$orgserver;
    $nomatch=$orgnomatch;
    }
    if($ext=="dk")
    {
    $server=$dkserver;
    $nomatch=$dknomatch;
    }

    if($option=="check")
    {
    $layout = check_domain($domain,$ext);
    print_results($layout);
    }
    if($option=="whois")
    {
    whois($domain,$ext);
    }
}

function check_domain($domain,$ext)
{
    global $nomatch,$server;
    $output="";
    if(($sc = fsockopen($server,43))==false){echo"Could not connect to whois server, Please try again later: $server";exit;}
    fputs($sc,"$domain.$ext\n");
    while(!feof($sc)){$output.=fgets($sc,128);}
    fclose($sc);

    if (eregi($nomatch,$output)){
    return 0;
    }
    else
    {
    return 1;
    }
}

function whois($domain,$ext)
{
    global $template,$server;
    if(($sc = fsockopen($server,43))==false)
    {
        if(($sc = fsockopen($server,43))==false)
        {
        echo 'There is a temporary service disruption, Please try again later';
        exit;
        }
    }
    if($ext=="com"||$ext=="net")
    {
        fputs($sc, "$domain.$ext\n");
        while(!feof($sc)){
        $temp = fgets($sc,128);
        if(ereg("Whois Server:", $temp))
        {
            $server = str_replace("Whois Server: ", "", $temp);
            $server = trim($server);
        }
    }
    fclose($sc);
    if(($sc = fsockopen($server,43))==false)
    {
        echo 'There is a temporary service disruption, Please try again later';
        exit;
    }
}


$output="";

fputs($sc,"$domain.$ext\n");
while(!feof($sc))
{
$output.=fgets($sc,128);
}
fclose($sc);
if(!is_file($template))
{
    print 'The template file does not exist or is not writable';
    exit;
}
$template = file ($template);
$numtlines = count ($template);
$line = 0;
while (! stristr ($template[$line], "<!--DOMAIN RESULTS-->") && $line < $numtlines)
    {
        echo $template[$line];
        $line++;
    }
$line++;
print '<div align=\"center\"><table width=\"100%\" border=\"0\" cellPadding=2 class=font1l>';
print "<tr><td><b>Information om dom&aelig;net \"$domain.$ext\"</b></td></tr>";
print '<tr><td><hr></td></tr><br><tr><td>';
$output= explode("\n",$output);
foreach ($output as $value)
    {
        print "$value<br>\n";
    }
print '</td></tr></table></div><br>';
while ($line < $numtlines)
    {
        echo $template[$line];
        $line++;
    }
}

function check_referer ()
{
global $REFERERS, $HTTP_REFERER;
    if ($HTTP_REFERER != "")
    while (list($val, $ref) = each($REFERERS))
        if (preg_match("/^http:\/\/$ref/", $HTTP_REFERER))
        return;
        print("Access denied to: $HTTP_REFERER<br>Please try again later!");
        exit;
}

function print_results($layout)
{
    global $template,$registerlink,$domain,$ext;
    $template = file ($template);
    $numtlines = count ($template);
    $line = 0;
        while (!stristr ($template[$line], "<!--DOMAIN RESULTS-->") && $line < $numtlines) {
        echo $template[$line];
        $line++;
    }

    if($layout==0){
        $line++;
        print '<table width="100%" border="1" cellPadding="2"><tr><td><b>Dom&aelig;net er ledig: ';
        print $domain;
        print '.';
        print $ext;
        print '</b></td></tr><tr><td>Vil du <a href=';
        print $registerlink;
        print '?domain=';
        print $domain;
        print '.';
        print $ext;
        print '>register</a> dom&aelig;net ?</td></tr></table>';
    }

    if($layout==1)
    {
        $line++;
        print '<table width="100%" border="1" cellPadding="2"><tr><td><b>Dom&aelig;net er optaget: ';
        print $domain;
        print '.';
        print $ext;
        print '</b><br></td></tr><tr><td><b>Se dom&aelig;net ejer: <a href="?domain=';
        print $domain;
        print '&ext=';
        print $ext;
        print '&option=whois">her</a></td></tr></table>';
    }

    while ($line < $numtlines)
    {
        echo $template[$line];
        $line++;
    }
}

function namecheck($domain)
{
    if($domain=="")
    {
        echo"Du skal skrive noget i feltet!<br>\n"; exit;
    }
    if(strlen($domain)<2)
    {
        echo"Dom&aelig;net: <b>$domain</b> er for kort (min: 2)"; exit;
    }
    if(strlen($domain)>57)
    {
        echo"Dom&aelig;net: <b>$domain</b> er for langt (max: 57)"; exit;
    }
    if(@ereg("^-|-$",$domain))
    {
        echo"Der er ulovlige karaktere i dom&aelig;nenavnet"; exit;
    }
    if(!ereg("([a-z]|[A-Z]|[0-9]|-){".strlen($domain)."}",$domain))
    {
        echo"Der er ulovlige karaktere i dom&aelig;nenavnet:"; exit;
    }
}
?>
Avatar billede detox Nybegynder
28. oktober 2004 - 20:14 #1
Der må mangle noget i det du viser her, da fejlen ligger i: 'topdog_whois.php' linje 218 og der er ikke nogen file() funktion i nærheden?
Avatar billede todoonada Nybegynder
28. oktober 2004 - 20:23 #2
hov, nej det er en fejl fra min side, her er de to fejl igen:

Warning: file() expects parameter 1 to be string, array given in /var/www/webroot/www.hededuhu.dk/whois/whois.php on line 218

Warning: file("") - Bad file descriptor in /var/www/webroot/www.hededuhu.dk/whois/whois.php on line 218
Avatar billede detox Nybegynder
28. oktober 2004 - 20:39 #3
Der er file() på linjerne: 164 og 203 og ikke på linje 218?
Avatar billede todoonada Nybegynder
28. oktober 2004 - 20:49 #4
jo det er der.

function print_results($layout)
{
global $template,$registerlink,$domain,$ext;
$template = file ($template);                  <-------- linje 218
$numtlines = count ($template);
$line = 0;
while (!stristr ($template[$line], "<!--DOMAIN RESULTS-->") && $line < $numtlines) {
echo $template[$line];
$line++;
}
Avatar billede detox Nybegynder
28. oktober 2004 - 21:05 #5
Nå, det er så linje 203 der er 218 hos dig ;O)
Jeg vil fore slå at bruge et andet variabelnavn der. Prøv:

function print_results($layout)
{
global $template,$registerlink,$domain,$ext;
$templatearr = file ($template);                  <-------- linje 218
$numtlines = count ($templatearr);
$line = 0;
while (!stristr ($templatearr[$line], "<!--DOMAIN RESULTS-->") && $line < $numtlines) {
echo $templatearr[$line];
$line++;
}
Avatar billede todoonada Nybegynder
28. oktober 2004 - 21:42 #6
okay nice nok! nu kommer der ikke nogen fejl! Men nu skriver den navnet på den fil som skal være i top at siden 4 gange efter vær søg.

du kan se det her: http://www.hededuhu.dk/whois/whois.html
søg på alle domænerne.

---
function print_results($layout)
{
        global $template,$registerlink,$domain,$ext;
        $templatearr = file($template);
        $numtlines = count($templatearr);
        $line = 0;
                while (!stristr ($template[$line], "<!--DOMAIN RESULTS-->") && $line < $numtlines) {
                echo $template[$line];
                $line++;
        }

        if($layout==0){
                $line++;
                print '<table width="100%" border="1" cellPadding="2"><tr><td><b>Dom&aelig;net er ledig: ';
                print $domain;
                print '.';
                print $ext;
                print '</b></td></tr><tr><td>Vil du <a href=';
                print $registerlink;
                print '?domain=';
                print $domain;
                print '.';
                print $ext;
                print '>register</a> dom&aelig;net ?</td></tr></table>';
        }

        if($layout==1)
        {
                $line++;
                print '<table width="100%" border="1" cellPadding="2"><tr><td><b>Dom&aelig;net er optaget: ';
                print $domain;
                print '.';
                print $ext;
                print '</b><br></td></tr><tr><td><b>Se dom&aelig;net ejer: <a href="?domain=';
                print $domain;
                print '&ext=';
                print $ext;
                print '&option=whois">her</a></td></tr></table>';
        }

        while ($line < $numtlines)
        {
                echo $template[$line];
                $line++;
        }
}
Avatar billede todoonada Nybegynder
28. oktober 2004 - 21:48 #7
hov fejl, sådan ser den ud nu:

men den skriver søge funktione 4 gange.
----
function print_results($layout)
{
global $template,$registerlink,$domain,$ext;
$templatearr = file($template);
$numtlines = count($templatearr);
$line = 0;
while (!stristr ($templatearr[$line], "<!--DOMAIN RESULTS-->") && $line < $numtlines) {
echo $templatearr[$line];
$line++;
}
Avatar billede todoonada Nybegynder
03. november 2004 - 13:27 #8
detox: Jeg har nu lavet et helt nyt, som virker ;) men hvis du vil har point så kom med et svar!
Avatar billede detox Nybegynder
03. november 2004 - 13:37 #9
Jeg vil kun have point, hvis jeg har bidraget til løsningen. Ellers tag dem selv :o)
Avatar billede todoonada Nybegynder
03. november 2004 - 14:22 #10
Okay, men så deler vi.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester