Pro ověřování vlastností internetových domén jsou k dispozici tzv. Whois servery. Díky nim můžete zjistit, zda je doména volná nebo kdo je vlastníkem domény, případně další údaje. Stačí k tomu jednoduchá funkce Whois.

Skript je opravdu jednoduchý a neposkytuje žádný velký komfort. O to jednodušeji ho ale můžete včlenit jako službu do své wap stránky. K začlenění tentokrát využijete službu Pyweb.com, která je k dispozici zdarma a umí převádět jakoukoli HTML stránku do formátu WML pro wap.

Výsledek dotazu na whois server totiž může být tak dlouhý, že se nevejde do jednoho decku, který je schopen zobrazit mobilní telefon – stránka prostě může být příliš dlouhá. Než se vyvíjet s nějakým komplikovaným řešením, využijte již zmíněnou službu – ta požadovanou stránku převede do formátu WML a navíc stránku rozdělí na části tak, aby se vždy korektně zobrazila na displeji telefonu. Dojde-li k rozdělení stránky na části, je na konci každé stránky vygenerován odkaz pro přechod na následující stránku.

Hlavní skript easywhois.php obsahuje část, ve které se zadaná doména "rozebere" na části. Nejprve je třeba podle domény prvního řádu (cz, com) upřesnit, kterého serveru se budete dotazovat. Většinou to bude whois.ripe.net, ale jsou i výjimky – ty jsou právě vyjmenované ve skriptu. Snažil jsem se posbírat ty nejdůležitější, i tak ale asi s výsledkem u některých com, org, edu domén nebudete úplně spokojeni – kompletní vlastnosti je u nich potřeba zjišťovat složitěji. Následuje navázání spojení s whois serverem a v případě úspěchu vygenerování výsledku.

Diakritika v textech hlášení je zadávána entitami, aby se korektně zobrazila i na displeji telefonu po zpracování službou Pyweb.com.

Skript easywhois.php:

<?PHP
if (!empty($domain)) { // provádět jen tehdy, je-li zadaná doména
  $tmpa = explode(".",$domain); // rozdělení na doménu 1., 2. a 3. řádu
  $tmpc = count($tmpa); // počet položek pole
  $sname = $tmpa[($tmpc-2)].".".$tmpa[$tmpc-1];
  switch ($tmpa[$tmpc-1]) { // podle domény zvolit whois server
    case "ac": $whois="whois.nic.ac"; break;
    case "am": $whois="whois.amnic.net"; break;
    case "as": $whois="whois.nic.as"; break;
    case "at": $whois="whois.nic.at"; break;
    case "au": $whois="whois.aunic.net"; break;
    case "be": $whois="whois.dns.be"; break;
    case "biz": $whois="whois.neulevel.biz"; break;
    case "br": $whois="whois.registro.br"; break;
    case "ca": $whois="whois.cira.ca"; break;
    case "cc": $whois="whois.nic.cc"; break;
    case "ch": $whois="whois.nic.ch"; break;
    case "ck": $whois="whois.ck-nic.org.ck"; break;
    case "cn": $whois="whois.cnnic.net.cn"; break;
    case "com": $whois="rs.internic.net"; break;
    case "cx": $whois="whois.nic.cx"; break;
    case "cz": $whois="whois.nic.cz"; break;
    case "de": $whois="whois.denic.de"; break;
    case "dk": $whois="whois.dk-hostmaster.dk"; break;
    case "edu": $whois="rs.internic.net"; break;
    case "fj": $whois="whois.usp.ac.fj"; break;
    case "fr": $whois="whois.nic.fr"; break;
    case "gov": $whois="whois.nic.gov"; break;
    case "gs": $whois="whois.adamsnames.tc"; break;
    case "hk": $whois="whois.hknic.net.hk"; break;
    case "hm": $whois="whois.registry.hm"; break;
    case "id": $whois="whois.idnic.net.id"; break;
    case "ie": $whois="whois.domainregistry.ie"; break;
    case "info": $whois="whois.afilias.info"; break;
    case "int": $whois="whois.isi.edu"; break;
    case "is": $whois="whois.isnet.is"; break;
    case "it": $whois="whois.nic.it"; break;
    case "jp": $whois="whois.nic.ad.jp"; break;
    case "ke": $whois="whois.rg.net"; break;
    case "kg": $whois="whois.domain.kg"; break;
    case "kr": $whois="whois.nic.or.kr"; break;
    case "kz": $whois="whois.domain.kz"; break;
    case "li": $whois="whois.nic.li"; break;
    case "lk": $whois="whois.nic.lk"; break;
    case "mil": $whois="whois.nic.mil"; break;
    case "ms": $whois="whois.adamsnames.tc"; break;
    case "mx": $whois="whois.nic.mx"; break;
    case "net": $whois="rs.internic.net"; break;
    case "nl": $whois="whois.domain-registry.nl"; break;
    case "no": $whois="whois.norid.no"; break;
    case "nu": $whois="whois.nic.nu"; break;
    case "nz": $whois="whois.domainz.net.nz"; break;
    case "org": $whois="rs.internic.net"; break;
    case "ru": $whois="whois.ripn.ru"; break;
    case "se": $whois="whois.nic-se.se"; break;
    case "sg": $whois="whois.nic.net.sg"; break;
    case "sh": $whois="whois.nic.sh"; break;
    case "st": $whois="whois.nic.st"; break;
    case "su": $whois="whois.ripe.net"; break;
    case "tc": $whois="whois.adamsnames.tc"; break;
    case "tf": $whois="whois.adamsnames.tc"; break;
    case "tj": $whois="whois.nic.tj"; break;
    case "th": $whois="whois.thnic.net"; break;
    case "to": $whois="whois.tonic.to"; break;
    case "tw": $whois="whois.twnic.net"; break;
    case "uk": $whois="whois.nic.uk"; break;
    case "us": $whois="whois.isi.edu"; break;
    case "va": $whois="whois.ripe.net"; break;
    case "vg": $whois="whois.adamsnames.tc"; break;
    case "ws": $whois="whois.nic.ws"; break;
    case "za": $whois="whois.frd.ac.za"; break;
    default : $whois = "whois.ripe.net"; // výchozí server whois
  }
  $f = fsockopen($whois, 43); // otevřít spojení (socket) na portu 43
  if ($f) {
    fputs($f,$sname."\r\n"); // podařilo-li se spojit, vyslat požadavek
    while(!feof($f))
      $data .= fread($f,1000); // dokud je co číst, načítat data do proměnné $data
    echo "<p>&#xDA;daje z whois serveru <b>$whois</b> o <b>$sname:</b></p>\n".nl2br($data)."\n"; // vypsat výsledek
    fclose($f);
  }
  else
    echo "<p>Nelze se p&#x0159;ipojit k whois nameserveru $whois!!!\n</p>";
}
else
  echo "<p>Zji&#x0161;&#x0165;ovan&#xE1; dom&#xE9;na nezad&#xE1;na!\n";
?>

Tuto novou službu můžete do wap stránky začlenit obdobně, jako je tomu v index.wml s formulářem pro zadání adresy domény:

<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card id="whois" title="Whois">
<p>
Domena: <input type="text" name="domain" title="Whois"/><br/>
<anchor>OK<go href="http://wap.pyweb.com/ch" method="get">
<postfield name="pyurl" value="http://mujserver.cz/easywhois.php"/>
<postfield name="query" value="$(domain)"/>
</go></anchor></p>
</card>
</wml>

V kartě je pole formuláře, do kterého se zadává zjišťovaná doména (např. interval.cz). Po odeslání se údaje předají skriptu služby Pyweb.com, důležitá je skrytá hodnota, ve které se předává adresa ke skriptu easywhois.php – musí být uvedená absolutně, aby jej služba Pyweb.com mohla najít. Skript si můžete stáhnout.

Starší komentáře ke článku

Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.

Žádný příspěvek v diskuzi

Odpovědět