Visualizzazione dei risultati da 1 a 2 su 2

Discussione: Guida Who is

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    2

    Guida Who is

    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

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    2
    nessuno tra tutti voi, che ci intendete, riesce darmi una mano? ^^ è cosi difficile il problema? perchè se non riuscite voi, passo mano per direttissima ghghgh

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.