Autor Zpráva
jirikovovideni
Profil
Zdravím mám kód na ověření dostupnosti domén.Jde mi ověřit,ale jen jedna najednou.Nevěděl by někdo jak kód upravit pro hromadné ověřevání domén.díky za tipy
<?php

if (!empty($_POST['ok']))
    {
    if (checkdnsrr($_POST['domena']))
        echo "Doména ".$_POST['domena']." je již obsazena!";
    else
        echo "Doména ".$_POST['domena']." je volná!";
     }

?>

<form action="" method="post">
<p align="center">
www.<input type="text" name="domena" value="např.seznam.cz"/><input type="submit" name="ok" />

</form>
Taps
Profil
jirikovovideni:
Seznam domén, které chceš ověřit musíš uložit do pole a pole pak pomocí foreach projít.
jirikovovideni
Profil
Mohl by jsi mi prosím dát příklad v php
Taps
Profil
jirikovovideni:
if (isset($_POST['ok']))
    {
    
    foreach($_POST['domena'] as $polozky){
    if (checkdnsrr($polozky))
        echo "Doména ".$polozky." je již obsazena!<br>";
    else
        echo "Doména ".$polozky." je volná!<br>";
        }
     }
 
?>
 
<form action="" method="post">
<p align="center">
www.<input type="text" name="domena[]" value="např.seznam.cz"/><br>
www.<input type="text" name="domena[]" value="např.seznam.cz"/><br>
www.<input type="text" name="domena[]" value="např.seznam.cz"/> <br>
<input type="submit" name="ok" />
 
</form>
jirikovovideni
Profil
Taps jsi nejlepší,díky funguje to.Ještě bych se chtěl zeptat jestli existuje způsob jak dát třeba tři domény do jednoho pole formuláře.
Taps
Profil
jirikovovideni:
existuje, ale jednotlivé položky musí být něčím odděleny (středník, čárka..), poté tyto položky rozdělíš pomocí explode opět do pole
Petr_
Profil *
jirikovovideni:
Budou-li v inputu zadány domény tak, že se oddělí čárkou, pak je stačí pomocí explode rozdělit do pole, a pak to pole jen projít cyklem (jak uvádí Taps).
Např:
$domeny = explode(",", $_POST['domena']);

foreach($domeny as $domena) {
  echo $domena; // nebo ten tvůj skript s $domena místo  $_POST
}
jirikovovideni
Profil
Ne asi ale určitě jsem se v to ztratil
<? if (isset($_POST['ok']))
    {
    $domeny = explode(",", $_POST['domena']);
    foreach($domeny['domena'] as $polozky){
    if (checkdnsrr($polozky))
        echo "Doména ".$polozky." je již obsazena!<br>";
    else
        echo "Doména ".$polozky." je volná!<br>";
        }
     }
 
?>
 
<form action="" method="post">
<p align="center">
www.<input type="text" name="domena[]" value="např.seznam.cz"/><br>

<input type="submit" name="ok" />
Taps
Profil
jirikovovideni:
v případě explode použij jen
<input type="text" name="domena" value="např.seznam.cz"/>
a pak
<?
 foreach($domeny as $polozky)
?>
jirikovovideni
Profil
Taps děkuji mockrát,jseš znalec
Micruss
Profil
Mno trošku bych to poupravil, pokud uživatel nepoužije "," tak to hodí php error s off setem, takže bych tam přidal podmínku

if(strpos($_POST['domena'], ",")!== FALSE) {
// explode(); atd...
}
jirikovovideni
Profil
Ještě jsem objevil jeden problém domeny .cz,.eu to kontroluje v pořádku ale domeny .com mi píše,že je volná,přitom je obsazená
aDAm
Profil
to proto protože se domény takto neověřují. musíš minimálně přes whois.
jirikovovideni
Profil
Tak po umorném hledání jsem našel toto a funguje to super,akorát mě nezajímá majitel domény apod. jen jestli je doména volná nebo obsazená.Potřeboval bych poradit co vyhodit,a´t nepoškodím kód a zobrazilo se mi jen volná nebo obsazená.
<?php
$domain = $_GET['domain'];

// For the full list of TLDs/Whois servers see http://www.iana.org/domains/root/db/ and http://www.whois365.com/en/listtld/
$whoisservers = array(

    "com" => "whois.verisign-grs.com",
    "coop" => "whois.nic.coop",
    // cr - Costa Rica - no whois server assigned
    // cu - Cuba - no whois server assigned
    // cv - Cape Verde - no whois server assigned
    // cw - Curacao - no whois server assigned
    "cx" => "whois.nic.cx", // Christmas Island
    // cy - Cyprus - no whois server assigned
    "cz" => "whois.nic.cz", // Czech Republic
    "de" => "whois.denic.de", // Germany

    "net" => "whois.verisign-grs.net",
    
    "org" => "whois.pir.org",

    "pl" => "whois.dns.pl", // Poland
    
    "sk" => "whois.sk-nic.sk", // Slovakia

    "uk" => "whois.nic.uk", // United Kingdom
    "us" => "whois.nic.us", // United States


function LookupDomain($domain){
    global $whoisservers;
    $domain_parts = explode(".", $domain);
    $tld = strtolower(array_pop($domain_parts));
    $whoisserver = $whoisservers[$tld];
    if(!$whoisserver) {
        return "Error: No appropriate Whois server found for $domain domain!";
    }
    $result = QueryWhoisServer($whoisserver, $domain);
    if(!$result) {
        return "Doména $domain je volná!";
    }
    else {
        while(strpos($result, "Whois Server:") !== FALSE){
            preg_match("/Whois Server: (.*)/", $result, $matches);
            $secondary = $matches[1];
            if($secondary) {
                $result = QueryWhoisServer($secondary, $domain);
                $whoisserver = $secondary;
            }
        }
    }
    return "$domain domain lookup results from $whoisserver server:\n\n" . $result;
}

function LookupIP($ip) {
    $whoisservers = array(
        //"whois.afrinic.net", // Africa - returns timeout error :-(
        "whois.lacnic.net", // Latin America and Caribbean - returns data for ALL locations worldwide :-)
        "whois.apnic.net", // Asia/Pacific only
        "whois.arin.net", // North America only
        "whois.ripe.net" // Europe, Middle East and Central Asia only
    );
    $results = array();
    foreach($whoisservers as $whoisserver) {
        $result = QueryWhoisServer($whoisserver, $ip);
        if($result && !in_array($result, $results)) {
            $results[$whoisserver]= $result;
        }
    }
    $res = "RESULTS FOUND: " . count($results);
    foreach($results as $whoisserver=>$result) {
        $res .= "\n\n-------------\nLookup results for " . $ip . " from " . $whoisserver . " server:\n\n" . $result;
    }
    return $res;
}

function ValidateIP($ip) {
    $ipnums = explode(".", $ip);
    if(count($ipnums) != 4) {
        return false;
    }
    foreach($ipnums as $ipnum) {
        if(!is_numeric($ipnum) || ($ipnum > 255)) {
            return false;
        }
    }
    return $ip;
}

function ValidateDomain($domain) {
    if(!preg_match("/^([-a-z0-9]{2,100})\.([a-z\.]{2,8})$/i", $domain)) {
        return false;
    }
    return $domain;
}

function QueryWhoisServer($whoisserver, $domain) {
    $port = 43;
    $timeout = 10;
    $fp = @fsockopen($whoisserver, $port, $errno, $errstr, $timeout) or die("Socket Error " . $errno . " - " . $errstr);
    //if($whoisserver == "whois.verisign-grs.com") $domain = "=".$domain; // whois.verisign-grs.com requires the equals sign ("=") or it returns any result containing the searched string.
    fputs($fp, $domain . "\r\n");
    $out = "";
    while(!feof($fp)){
        $out .= fgets($fp);
    }
    fclose($fp);

    $res = "";
    if((strpos(strtolower($out), "error") === FALSE) && (strpos(strtolower($out), "not allocated") === FALSE)) {
        $rows = explode("\n", $out);
        foreach($rows as $row) {
            $row = trim($row);
            if(($row != '') && ($row{0} != '#') && ($row{0} != '%')) {
                $res .= $row."\n";
            }
        }
    }
    return $res;
}
?>
<html>
<head>
<title>Whois Lookup Script</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<form action="<?=$_SERVER['PHP_SELF'];?>">
<p><b><label for="domain">Domain/IP Address:</label></b> <input type="text" name="domain" id="domain" value="<?=$domain;?>"> <input type="submit" value="Lookup"></p>
</form>
<?
if($domain) {
    $domain = trim($domain);
    if(substr(strtolower($domain), 0, 7) == "http://") $domain = substr($domain, 7);
    if(substr(strtolower($domain), 0, 4) == "www.") $domain = substr($domain, 4);
    if(ValidateIP($domain)) {
        $result = LookupIP($domain);
    }
    elseif(ValidateDomain($domain)) {
        $result = LookupDomain($domain);
    }
    else die("Invalid Input!");
    echo "<pre>\n" . $result . "\n</pre>\n";
}
?>
</body>
</html>

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: