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>Ú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řipojit k whois nameserveru $whois!!!\n</p>"; } else echo "<p>Zjišťovaná doména nezadá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.