Salve a tutti! sono nuovo di questo sito e del php in generale quindi chiedo perdono in anticipo se scriverò un sacco di scemenze. ^^

Vengo subito al dunque, stavo giocando con una guida che ho trovato qui su html.it che spiega come utilizzare php per capire se un domio è già registrato oppure no...

Mentre spremovo le meningi nel tentare di capirci qualcosa mi sono accorto che l'autore parla di raccogliere i dati da un form ipotetico, allora mi sono cimentato in questa fantastica sfida!! ^^ cioè creare un form che permettesse allo script di ricevere le 2 variabili "domain" e "tld".

Purtroppo mi sono reso conto che sui domini .it lo script restituisce "Il dominio non è disponibile" anche se nella query di risposta compare domain AVAILABLE...

Dando un occhiata a tutto il codice non sono in grado di capire dove stà l'errore, perchè per quanto riguarda gli altri domini (.com .net ecc) tutto funziona alla grande...

Qualcuno quando ha 2 minutini può provare a capire dove stà il problema? perchè sono proprio curioso di sapere se sbaglio io a passare le variabili o se c'e un errore proprio nella guida.


Il tutto è composta dal form:
Codice PHP:
<html>
<
body>
<
form action="esempio2.php" method="post">
[
url]www.[/url] <input type="text" name="domain" value="domain">
<
select name="tld" size="1" >
   <
option value="it">IT</option>
   <
option value="com">COM</option>
   <
option value="net">NET</option>
   <
option value="org">ORG</option>
   <
option value="biz">BIZ</option>
  </
select>
<
input name="Input" type="submit" />
</
form>
</
body>
</
html
Dallo script
Codice PHP:
<?php
/******************
file esempio2.php
*******************/

/*
Includiamo le classi
*/

$domain=$_POST['domain']; //Recupero la variabile globale domain
$tld=$_POST['tld']; //Recupero la variabile globale tld
include_once('./whoisClasses.php') ;


/*
Definiamo alcuni oggetti WHOISdb precisando per ognuno il server e la stringa che indica la disponibilità del dominio.
Aggiungi gli altri che ti interessano.
*/
$itnicObj = new WHOISdb('whois.nic.it''no entries found') ;

$internicObj = new WHOISdb('whois.internic.net''no match for') ;

$orgObj = new WHOISdb('whois.publicinterestregistry.net''not found') ;

$bizObj = new WHOISdb('whois.nic.biz''not found') ;


/*
Array che associa i TLD al corretto WHOIS database
*/
$tldList = array(

'it' => $itnicObj,
'com' => $internicObj,
'net' => $internicObj,
'org' => $orgObj,
'biz' => $bizObj

)   ;

/*
I dati provenienti da un ipotetico form
con 2 campi: uno per selezionare il TLD e l'altro per il dominio di secondo livello
*/


if(!$resultObj $tldList$tld ]->checkDomain($domain$tld)){

        die(
'Si sono verificati dei problemi, ci scusiamo per il disservizio') ;
        
/*
        debug
        */
        //$tldList[ $tld ]->getErrors() ;
}

elseif( 
$resultObj->isAvailable() ){

       echo(
'[b]'.$resultObj->getDomain().' [/b]è disponibile') ;

}

else{

      echo(
'[b]'.$resultObj->getDomain().'[/b] non è disponibile

'
) ;
      echo(
'[b]Ecco i dettagli [/b]

<pre>'
.$resultObj->getInfo().'</pre>') ;
}

?>
E dalla classe:
Codice PHP:
<?php
/**
 * Classe per la gestione degli errori
 */
class ErrorHandler {
    var 
$errors ;
    var 
$TCP_CANNOT_CONNECT ;
    var 
$TCP_CANNOT_SEND ;
    var 
$TCP_CANNOT_READ ;
    var 
$TCP_CANNOT_DISCONNECT ;
    var 
$DOMAIN_NOT_VALID ;

    function 
ErrorHandler()
    {
        
/**
         * Un messaggio per ogni tipo di errore che intendiamo intercettare
         */
        
$this->TCP_CANNOT_CONNECT 'Impossibile connettersi a ' ;
        
$this->TCP_CANNOT_SEND 'Impossibile inviare la seguente request: ' ;
        
$this->TCP_CANNOT_READ 'Impossibile lettura da ' ;
        
$this->TCP_CANNOT_DISCONNECT 'Impossibile chiudere la connessione a ' ;
        
$this->DOMAIN_NOT_VALID 'Nome dominio non valido: ' ;

        
$this->errors = array() ;
    } 

    
/**
     * Aggiunge l'errore alla lista
     */
    
function addError($msg)
    {
        
$this->errors[] = $msg ;
    } 

    
/**
     * Recupera la lista degli errori
     */
    
function getErrors()
    {
        
$errorList '' ;

        foreach(
$this->errors as $v) {
            
$errorList .= $v "\n" ;
        } 

        return(
$errorList) ;
    } 
//END class ErrorHandler
/**
 * La classe principale: 
 *connesssione, query e lettura dei risultati da un WHOIS
 */
class WHOISdb extends ErrorHandler {
    var 
$target ;
    var 
$port ;
    var 
$link ;
    var 
$timeout ;
    var 
$crlf ;
    var 
$notFound ;
    var 
$info ;

    
/**
     * Costruttore
     */
    
function WHOISdb($target$notFoundMsg$port 43$timeout 30$br "\r\n")
    {
        
$this->ErrorHandler() ;
        
$this->target $target ;
        
$this->port $port ;
        
$this->timeout $timeout ;
        
$this->crlf $br ;

        
$this->notFound $notFoundMsg ;
        
$this->info '' ;
    } 
//END contructor
    /**
     * Metodo privato per la connessione
     */
    
function _connect()
    {
        if (!
$this->link fsockopen($this->target$this->port$errno$errstr$this->timeout)) {
            
$this->addError($this->TCP_CANNOT_CONNECT $this->target ':' $this->port) ;
            return(
false) ;
        } 

        return(
true) ;
    } 
//END _connect
    /**
     * Metodo privato per invio di una request
     */
    
function _send($domainStr)
    {
        if (!
fputs($this->link$domainStr $this->crlf)) {
            
$this->addError($this->TCP_CANNOT_SEND $domain '.' $tld) ;
            return(
false) ;
        } 

        return(
true) ;
    } 
//END _send
    /**
     * Metodo privato per la cattura del response
     */
    
function _get()
    {
        
$dati '' ;

        
/**
         * Stabilisce il tempo di attesa max prima 
         * dell'inizio della lettura dei dati
         */
        
if (function_exists('stream_set_timeout')) {
            
stream_set_timeout($this->link$this->timeout0);
        } while (!
feof($this->link) && $line fgets ($this->link4096)) {
            if (
$line === false || $line === 0) {
                
$this->addError($this->TCP_CANNOT_READ $this->target) ;

                return(
false) ;
            } 

            
$dati .= $line ;
        } 

        return(
$dati) ;
    } 
//END _get
    /**
     * Metodo principale (pubblico), è il metodo che
     * controlla la disponibilità del dominio,
     * verificando la presenza della stringa  $this->notFound.
     * Crea l'oggetto WHOISresult
     */
    
function checkDomain($domain$tld)
    {
        
$pattern '<^[0-9A-Za-z]([0-9A-Za-z]|-)+[0-9A-Za-z]\.[A-Za-z]{2,4}(\.[A-Za-z]{2,4})?$>' ;

        
$domainStr $domain '.' $tld ;

        
/**
         * Verifica la validità dei caratteri del dominio
         */
        
if (!preg_match($pattern$domainStr)) {
            
$this->addError($this->DOMAIN_NOT_VALID $domainStr) ;
            return(
false) ;
        } elseif (!
$this->_connect()) {
            return(
false) ;
        } elseif (!
$this->_send($domainStr)) {
            return(
false) ;
        } elseif (!
$this->info $this->_get()) {
            return(
false) ;
        } 

        
$disponibile = (bool)stristr($this->info$this->notFound) ;

        return(new 
WHOISresult($domainStr$disponibile$this->info)) ;
    }
//END class WHOISdb
/**
 * Classe da cui si istanziano gli oggetti
 * risultato delle query
 */
class WHOISresult {
    
/**
     * Costruttore
     */
    
function WHOISresult($domain$disponibile, &$info)
    {
        
$this->domain $domain ;
        
$this->disponibile $disponibile ;
        
$this->info = &$info ;
    } 

    
/**
     * Dice se il domain è disponibile oppure no
     */
    
function isAvailable()
    {
        return(
$this->disponibile) ;
    } 

    
/**
     * Restituisce il nome del dominio richiesto
     */
    
function getDomain()
    {
        return(
$this->domain) ;
    } 

    
/**
     * Restituisce la risposta completa del servizio WHOIS
     */
    
function getInfo()
    {
        return(
$this->info) ;
    } 
//END class WHOISresult

?>
Grazie in anticipo per l'aiuto ^^
Saluti