PHP - Code vérifier la disponibilité d'un nom de domaine

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3326
Inscription: Mar Nov 16, 2004 18:27

PHP - Code vérifier la disponibilité d'un nom de domaine

Message le Mer Mar 26, 2008 0:44

Salut les Wrinautes !!

Apres des mois a surfer sur WRI je sais que beaucoup d'entre vous attendent ce code avec impatience. Il a été testé chez OVH sur 1 serveur mutualisé et retourne sans erreur la disponibilité d'un nom de domaine avec les extentions suivantes:

.com .eu .fr .net .org .info .ca .biz .de me.uk co.uk org.uk

Sans plus attendre, voici le code:

Code: Tout sélectionner
<?php

$result = '';
$theNdd = trim($_POST['theNdd']);
$theExt = $_POST['theExt'];

if (!empty($theNdd) AND !empty($theExt)) {

       $theNdd = preg_replace(array( '/http:\/\/www\./',
                                     '/http:\/\//',
                                     '/www\./' ),
                              array( '', '', '') ,$theNdd);

       $theNdd = preg_replace(array( '/\.eu/',
                                     '/\.fr/',
                                     '/\.com/',
                                     '/\.net/',
                                     '/\.org/',
                                     '/\.info/',
                                     '/\.biz/',
                                     '/\.de/',
                                     '/\.me.uk/',
                                     '/\.co.uk/',
                                     '/\.org.uk/',
                                     '/\.ca/' ),
                              array( '', '', '', '', '', '', '', '', '', '', '', '') ,$theNdd);

        $theNdd = escapeshellcmd($theNdd);
        //on definit les case du tableau à vérifier
        $caseForVerif['.net']=7;
        $caseForVerif['.com']=7;
        $caseForVerif['.org']=0;
        $caseForVerif['.fr']=13;
        $caseForVerif['.ca']=5;
        $caseForVerif['.info']=0;
        $caseForVerif['.biz']=1;
        $caseForVerif['.de']=35;
        $caseForVerif['.eu']=50;
        $caseForVerif['.me.uk']=30;
        $caseForVerif['.co.uk']=30;
        $caseForVerif['.org.uk']=40;
        //on definit les phrase à vérifier dans ces cases
        $strForVerif['.com']='No match for "'.$theNdd.'.COM".';
        $strForVerif['.fr']='%% No entries found in the AFNIC Database.';
        $strForVerif['.net']='No match for "'.$theNdd.'.NET".';
        $strForVerif['.org']='NOT FOUND';
        $strForVerif['.ca']='';
        $strForVerif['.info']='NOT FOUND';
        $strForVerif['.biz']='';
        $strForVerif['.de']='';
        $strForVerif['.eu']='';
        $strForVerif['.me.uk']='';
        $strForVerif['.co.uk']='';
        $strForVerif['.org.uk']='';
        foreach($theExt as $anExt) {
            $myArray="";
            $anExt=escapeshellcmd($anExt);
            exec('whois '.$theNdd.$anExt,$myArray,$retval);
               $result.=(strtolower($myArray[$caseForVerif[$anExt]])==strtolower($strForVerif[$anExt]))?"->> ".$theNdd.$anExt." est libre<br/>":"->> ".$theNdd.$anExt." est d&eacute;j&agrave; r&eacute;serv&eacute;<br />";
        }
}
?>

<form action="<?php echo $_SERVER['REQUEST_URI']; ?>" name="formVeirfNdd" enctype="multipart/form-data" method="post">
www.<input type="text" name="theNdd" value="<?php echo $theNdd; ?>" />
<input name="theExt[]" type="checkbox" value=".com" id="com" checked><label for="com">.com</label>
<input name="theExt[]" type="checkbox" value=".eu" id="eu"><label for="eu">.eu</label>
<input name="theExt[]" type="checkbox" value=".fr" id="fr"><label for="fr">.fr</label>
<input name="theExt[]" type="checkbox" value=".net" id="net"><label for="net">.net</label>
<input name="theExt[]" type="checkbox" value=".org" id="org"><label for="org">.org</label>
<input name="theExt[]" type="checkbox" value=".info" id="info"><label for="info">.info</label>
<input name="theExt[]" type="checkbox" value=".ca" id="ca"><label for="ca">.ca</label>
<input name="theExt[]" type="checkbox" value=".biz" id="biz"><label for="biz">.biz</label>
<input name="theExt[]" type="checkbox" value=".de" id="de"><label for="de">.de</label>
<input name="theExt[]" type="checkbox" value=".me.uk" id="me.uk"><label for="me.uk">me.uk</label>
<input name="theExt[]" type="checkbox" value=".co.uk" id="co.uk"><label for="co.uk">co.uk</label>
<input name="theExt[]" type="checkbox" value=".org.uk" id="org.uk"><label for="org.uk">org.uk</label>
<input type="submit" value="V&eacute;rifier">
</form>

<?php echo '<h3>'.$result.'</h3>';  ?>
Dernière édition par KOogar le Ven Mar 28, 2008 11:16, édité 1 fois.

capleton59
WRInaute impliqué
WRInaute impliqué
 
Messages: 302
Inscription: Dim Avr 24, 2005 14:45

Message le Mer Mar 26, 2008 9:03

Merci je vais tester ça :D

DadouDuck
WRInaute passionné
WRInaute passionné
 
Messages: 811
Inscription: Lun Mai 28, 2007 22:41

Message le Mer Mar 26, 2008 9:07

Comment tu testes la dispo? tu exécutes une appli du serveur?


Basque
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 171
Inscription: Mer Mar 19, 2008 12:16

Message le Mer Mar 26, 2008 9:11

exec('whois '.$theNdd.$anExt,$myArray,$retval);

DadouDuck
WRInaute passionné
WRInaute passionné
 
Messages: 811
Inscription: Lun Mai 28, 2007 22:41

Message le Mer Mar 26, 2008 9:52

Ben justement, exec c'est pas pour exécuter une appli du serveur??

Enfin, il y a un problème, c'est que c'est très long pour tester


webmasterlamogere
WRInaute accro
WRInaute accro
 
Messages: 1874
Inscription: Dim Déc 17, 2006 21:08

Message le Mer Mar 26, 2008 12:06

sinon il y a des versions sans exec mais avec socket : http://www.cybwarrior.com/FR/download/PHP/WHOIS.html


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3326
Inscription: Mar Nov 16, 2004 18:27

Message le Mer Mar 26, 2008 12:24

webmasterlamogere a écrit:sinon il y a des versions sans exec mais avec socket : http://www.cybwarrior.com/FR/download/PHP/WHOIS.html


lu,

http://www.cybwarrior.com/download/dl/p ... /index.php
"Le nom de domaine phpsources.org semble libre" ...

ca ma l'air un peu foireux comme script..

DadouDuck a écrit:Enfin, il y a un problème, c'est que c'est très long pour tester


Pas chez moi

DadouDuck
WRInaute passionné
WRInaute passionné
 
Messages: 811
Inscription: Lun Mai 28, 2007 22:41

Message le Mer Mar 26, 2008 16:58

J'ai fais un benchmark dessus, et voila ce que j'obtiens : 120.06942 secondes c'est pour cela que je voudrais comprendre le fonctionnement du whois pour savoir pourquoi j'ai autant de délais d'attente


webmasterlamogere
WRInaute accro
WRInaute accro
 
Messages: 1874
Inscription: Dim Déc 17, 2006 21:08

Message le Mer Mar 26, 2008 17:03

KOogar a écrit:http://www.cybwarrior.com/download/dl/php/whois/index.php
"Le nom de domaine phpsources.org semble libre" ...

ca ma l'air un peu foireux comme script..

en effet ça marche pas avec les .org
le serveur whois interrogé ne doit pas être le bon

pppplus
Nouveau WRInaute
 
Messages: 12
Inscription: Lun Oct 30, 2006 22:38

Message le Mer Mar 26, 2008 22:01

Bonjour,

Comment fait-on pour autoriser son propre serveur à pouvoir exécuter ces scripts whois ?

Depuis que je suis sur mon nouveau serveur, j'ai une erreur fsockopen :
Code: Tout sélectionner
Warning: fsockopen() [function.fsockopen]: unable to connect to whois.verisign-grs.com:43 (Connection timed out) in


Les techniciens me disent que c'est un problème de firewall et que c'est "mon" problème. Ils me l'avaient débloqué l'an passé sur le précédent serveur, mais rien à faire cette année. :evil: .
Donc où peut-on régler ce problème ?
Serveur privé sur Linux, avec plesk8.3
J'ai accès au serveur par Putty et Winscp.

Si vous savez comment faire, ce sera super sympa de m'aider !


efz
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 180
Inscription: Mer Nov 16, 2005 10:06

Message le Jeu Mar 27, 2008 11:34

Ton script fonctionne très bien, je le garde sous le coude, ça peut servir ;)

Merci KOogar pour cette contribution :)

ps: une petite reco pour toi ;)


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3326
Inscription: Mar Nov 16, 2004 18:27

Message le Ven Mar 28, 2008 11:26

efz a écrit:Ton script fonctionne très bien, je le garde sous le coude, ça peut servir ;)

Merci KOogar pour cette contribution :)

ps: une petite reco pour toi ;)


c'est pas moi qui mérite la reco mais le script ;)

Je viens de mettre la mouture définitive, j'ai préféré gérer les erreurs directement sans rapports.
Par exemple si le client met malencontreusement le "http://" dans la requete, au lieu de lui demander de l'enlever, le script le fait pour lui et le client peut continuer d'envoyer ses requêtes sans perdre de temps.

maddanny
WRInaute impliqué
WRInaute impliqué
 
Messages: 282
Inscription: Mar Mar 22, 2005 23:19

Message le Ven Mar 28, 2008 11:55

Le script est sympa sauf que le whois n'est pas un outil pour verifier la disponibilité d'un nom de domaine !
Pour verifier à coup sur la dispo d'un NDD, mieux vaut utiliser les API d'un registrar, c'est plus efficace et fiable ;)

MADdanny


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3326
Inscription: Mar Nov 16, 2004 18:27

Message le Ven Mar 28, 2008 12:37

tu peux nous donner le code dont tu parles ?

Les rapports ne changent pas comme ca, ce code avec le whois devrait rester actualisé pendant quelques années.


webmasterlamogere
WRInaute accro
WRInaute accro
 
Messages: 1874
Inscription: Dim Déc 17, 2006 21:08

Message le Ven Mar 28, 2008 15:59

J'ai trouvé l'API OVH. la spec est là : http://www.ovh.com/soapi/fr/domainCheck.xml
il suffit juste de renseigner son login et mot de passe OVH et remplacer example.com par le domaine a tester.
Ce script ne marche qu'en PHP5. il faut donc mettre une extension php5 ou ajouter la ligne suivante dans le .htaccess :
Code: Tout sélectionner
SetEnv PHP_VER 5

Code: Tout sélectionner
<?php
$soap = new SoapClient('http://www.ovh.com/soapi/ovh.wsdl');

//login
try {
   $login = "XXXXX-ovh";
   $password = "********";
   $session = $soap->login($login,$password,null);
} catch(SoapFault $fault) {
   echo "Error : ".$fault . '<br>';
}

//domainCheck
try {
   $result = $soap->domainCheck($session, 'example.com');
   foreach($result as $value) {
      echo $value->reason . '<br>';
   }
} catch(SoapFault $fault) {
   echo "Error : ".$fault . '<br>';
}

//logout
try {
$result = $soap->logout($session);
} catch(SoapFault $fault) {
echo "Error : ".$fault . '<br>';
}
?>

PHP - Code vérifier la disponibilité d'un nom de domaine

Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :

Consultez la description détaillée des produits ou services de Google suivants : Google Code, Google Apps Edition Premium



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités