|
|||||||||||||||||
|
Esempio di Whois in PHPPer effettuare un whois di un nome a dominio tramite PHP si può utilizzare la funzione fsockopen, che consente di aprire una connessione socket su di una porta specifica (la porta 43 è quella dei server whois) come se si utilizzasse un file.Nell'esempio seguente si utilizza una mappa ("estensione","server") memorizzata nel vettore $mappa_estensione_server che associa ad una specifica estensione di dominio il relativo whois server. Qui sono riportati i whois server per alcuni gTLD e ccTLD, in particolare com/net/org/info/biz, ma è sufficiente aggiungere una nuova coppia alla mappa per gestire una nuova estensione.
whois.php
<?php
class whois_search {
var $mappa_estensione_server = array (
"it" => "whois.nic.it",
"com" => "whois.internic.net",
"net" => "whois.internic.net",
"org" => "whois.publicinterestregistry.net",
"info" => "whois.afilias.net",
"biz" => "whois.neulevel.biz",
"eu" => "whois.registry.eu",
"name" => "whois.nic.name",
"mobi" => "whois.dotmobiregistry.net",
"us" => "whois.nic.us",
"me" => "whois.meregistry.net",
"tv" => "whois.nic.tv",
"ws" => "whois.nic.ws",
"cn" => "whois.cnnic.cn"
);
function do_whois($dominio) {
$dominio = strtolower(trim($dominio));
$pos_punto = strrpos($dominio, ".");
if (!$pos_punto) {
return "nome di dominio non valido";
} else {
$estensione = substr($dominio, $pos_punto + 1);
if (!array_key_exists($estensione,$this->mappa_estensione_server)) {
return "estensione <b><i>.".$estensione."</i></b> non supportata";
}
}
$server = $this->mappa_estensione_server[$estensione];
$puntatore_whois = fsockopen($server, 43, $errno, $errstr, 30);
$html_output = '';
if (!$puntatore_whois) {
$html_output = "$errstr ($errno)";
} else {
fputs($puntatore_whois, "$dominio\r\n");
$html_output .= "<pre>\r\n";
while (!feof($puntatore_whois)) {
$html_output .= fread($puntatore_whois,128);
}
$html_output .= "</pre>";
fclose ($puntatore_whois);
}
return $html_output;
}
function print_allowed_extension () {
$vettore_estensioni = array_keys($this->mappa_estensione_server);
$estensioni_supportate = '';
for ($i = 0; $i < count($vettore_estensioni); $i++) {
$estensioni_supportate .= ' .'.$vettore_estensioni [$i].' ';
}
return $estensioni_supportate;
}
}
$whois = new whois_search();
$html_form =
'<form method=post action="">
Inserisci il nome di dominio: <input type="text" name="dominio" size="40">
<br>
<small>estensioni suppoortate: '.$whois->print_allowed_extension ().'</small>
<br>
<input type="submit" value="invio"> <input type="reset" value="cancella">
</form>';
if (isset($_POST["dominio"])) {
$corpo_pagina = '<h2>Domain name Whois</h2>'.$html_form.'<hr>';
$corpo_pagina .= '<h2>Risultato Whois per il dominio : '.$_POST["dominio"].'</h2><br>';
$corpo_pagina .= $whois->do_whois($_POST["dominio"]);
} else {
$corpo_pagina = '<h2>Domain name Whois</h2>'.$html_form;
}
unset($whois);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<HTML>
<head>
<title>Ricerca Whois</title>
<meta name="Generator" content="EditPlus">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
</head>
<body>
<?=$corpo_pagina?>
</body>
</html>
Lo script è estremamente semplice. Il metodo centrale è do_whois, che, una volta individuato il corretto server whois, apre verso di esso una connessione socket sulla porta 43 tramite fsockopen. La connessione aperta attende quindi un nome a dominio, che viene inviato tramite la funzione fputs. Il risultato viene letto tramite la funzione fgets fino al carattere di fine file e restituito sotto forma di stringa come risultato del metodo do_whois. Nella classe whois_search è presente un solo altro metodo, print_allowed_extension, che restituisce una stringa con le estensioni a dominio valide, che può essere stampata a video per guidare l'utente Naturalmente questo è solo un esempio di base, ma poiché la funzione whois è incapsulata in una classe, potete estendere l'oggetto come desiderate aggiungendo proprietà e metodi che vi possono essere utili, come ad esempio la ricerca sui name server o sugli handler per i domini .it. |
| [ Hosting Solutions | Copyright © 1999 - 2011 Genesys Informatica Srl. P.iva 02002750483 | Privacy | Regolamentazione | Mappa del sito ] |