Aide pour modifier un script

Eléphant du PHP | 62 Messages

28 juin 2016, 08:47

Bonjour à tous

J'ai trouvé ce script php sur un site qui permet de tester la disponibilité de plusieur ndd (Nom de domaine) inscrit dans un fichier texte.

Mon problème est que le script recherche la disponibilité sur toutes les extentions
alors que je voudrait qu'il ne recherche que sur l'extention que j'aurai indiquer sur le fichier texte

Pourriez vous me dire comment transformer le script ci-dessous

Merci beaucoup à tous pour votre aide
<?php
/******************************************************************************/
/*                                                                            */
/*                       __        ____                                       */
/*                 ___  / /  ___  / __/__  __ _____________ ___               */
/*                / _ \/ _ \/ _ \_\ \/ _ \/ // / __/ __/ -_|_-<               */
/*               / .__/_//_/ .__/___/\___/\_,_/_/  \__/\__/___/               */
/*              /_/       /_/                                                 */
/*                                                                            */
/*                                                                            */
/******************************************************************************/
/*                                                                            */
/* Titre          : Vérifier massivement la disponibilité de plusieurs Nom... */
/*                                                                            */
/* URL            : http://www.phpsources.org/scripts380-PHP.htm              */
/* Auteur         : KOogar                                                    */
/* Date édition   : 05 Mai 2008                                               */
/* Website auteur : http://ref.nc                                             */
/*                                                                            */
/******************************************************************************/
 

// .eu .fr .com .net .org .info .biz .de .ca .me.uk .co.uk .org.uk
$theExt = array(".fr",".com",".eu",".ca",".info",".biz",".de",".org",".net");
// .eu .fr .com .net .org .info .biz .de .ca .me.uk .co.uk .org.uk

if (!($f=fopen("liste_ndd.txt","r")))
exit("Impossible d'ouvrir le fichier."); 
$f = 'liste_ndd.txt';
$tab = array();
if(file_exists($f)) {
    $tab = file($f);  // place le fichier dans un tableau
    $nb = count($tab);    // compte le nombre de ligne
    echo $nb;
    echo ' NDDs a vérifier';
}


$i=0;
  while ($i<=$nb)
  {
        $theNdd = $tab[$i];
         $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']=45;
        $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);
            if (!empty($theNdd))
            $result.=(strtolower($myArray[$caseForVerif[$anExt]])== 
                      strtolower($strForVerif[$anExt]))?"->> ".$theNdd.$anExt." 
                      est libre<br/>":"->> ".$theNdd.$anExt." 
                      est déjà réservé<br />";  

        } 
   $i++;
  }
   echo '<h3>'.str_replace('\\','',$result).'</h3>';
?>

Mammouth du PHP | 737 Messages

28 juin 2016, 10:34

Salut,
Bah à priori y a juste à réduire cet array :
$theExt = array("monextension"); en lieu et place de $theExt = array(".fr",".com",".eu",".ca",".info",".biz",".de",".org",".net");
Mega
;)
Dyslexics are teople poo

Eléphant du PHP | 62 Messages

28 juin 2016, 13:17

Et pour les lignes suivantes du type
$caseForVerif['.net']=7;
        $caseForVerif['.com']=7;
        $caseForVerif['.org']=0;
        $caseForVerif['.fr']=13;
        $caseForVerif['.ca']=5;
        $caseForVerif['.info']=0;
        $caseForVerif['.biz']=1;
        $caseForVerif['.de']=45;
        $caseForVerif['.eu']=50
Y a rien à changer ?

Merci pour votre réponse
Gil

Mammouth du PHP | 1395 Messages

28 juin 2016, 13:49

non, il n'y a rien à changer.

Mammouth du PHP | 1684 Messages

28 juin 2016, 13:53

tout dépend de si tu choisis une des extensions qu'il y avait avant ou pas.

car ces lignes ne sont utile que si l'extension correspond, trop de ligne est inutile mais pas génant.
Si tu cherches une nouvelle extension, il faudra voir à qui ressemble le retour du whois et adapter des nouvelles lignes en conséquences
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphant du PHP | 62 Messages

28 juin 2016, 21:45

Bonsoir et excusez le retard de ma réponse,

En fait je ne souhaite pas indiquer d'extention dans le script, je souhaite indiquer le nom de domaine directement dans le fichier comme par exemple monsite.com et que ce soit juste ce nom de domaine là qui soit pris en compte et requété en fait que le nom de domaine à requété soit gérer dans le fichier texte et non pas dans le script

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 8536 Messages

28 juin 2016, 23:28

Bonjour,

As tu testé ce script sur le futur serveur que tu vas utiliser comme hébergement ?
Car exec('whois ....') n'est pas disponible chez tous les hébergeurs
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 62 Messages

29 juin 2016, 06:43

Bonjour,

Oui je l'ai testé sur OVH et ça marche bien

Mammouth du PHP | 1684 Messages

29 juin 2016, 08:36

Ce que tu cherche à faire n'est pas trop compliqué, le début du code peut rester pour la lecture du fichier texte,

au début de ta boucle while, aprés récupération du nom de domaine tu va devoir séparer l'extension du nom. les fonction substr() et strpos() devrait t'y aider, à priori ce qui est avant le premier point de la chaine est le nom de domaine et ce qui est après l'extension.

ensuite il te faudra vérifier que l'extension est dans la liste des extensions vérifiables, le tableau défini en début de script sera utile

puis la boucle foreach peut être enlevé (mais pas son contenu) pour ne tester que l'extension voulue.

a priori avec ces changements cela devrait fonctionner.
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8756 Messages

29 juin 2016, 12:31

salut,

ton script devrait ressembler à cela
<?php

$caseForVerif = ['.net' => 7, '.com' => 7, '.org' => 0, '.fr' => 13, '.ca' => 5, '.info' => 0, '.biz' => 1, '.de' => 45, '.eu' => 50, '.me.uk' => 30, '.co.uk' => 30, '.org.uk' => 40];
$strForVerif = ['.com' => 'No match for %s".', 'fr' => '%%%% No entries found in the AFNIC Database.', 'net' => 'No match for %s".', 'org' => 'NOT FOUND', 'ca' => '', 'info' => 'NOT FOUND', 'biz' => '', 'de' => '', 'eu' => '', 'me.uk' => '', 'co.uk' => '', 'org.uk' => ''];

$ndds = file('liste_ndd.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$result = '';
foreach ($ndds as $ndd) {
    if (!empty($theNdd)) {
        $theNdd = escapeshellcmd($ndd);
        $myArray = '';
        $anExt = substr($theNdd, strrpos($theNdd, '.'));
        $anExt = escapeshellcmd($anExt);
        exec('whois '.$theNdd, $myArray);
        $result .= '->> '.$theNdd;
        if ((strtolower($myArray[$caseForVerif[$anExt]]) == sprintf(strtolower($strForVerif[$anExt])))) {
            $result .= 'est libre';
        } else {
            $result .= 'est déjà réservé';
        }
        echo '<h3>' , str_replace('\\', '', $result) , '</h3';
    }
}
j'ai pas testé, j'ai juste 'optimisé' l'utilisation des tableaux, supprimer les trucs 'inutiles' et utilisé seulement le ndd fournit sur chaque ligne du fichier.

Le fichier doit contenir un ndd par ligne

par exemple
phpfrance.com
www.phpfrance.com
phpfrance.fr
www.phpfrance.fr
etc..


@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 62 Messages

30 juin 2016, 07:05

Bonjour et merci pour vos réponse,

Je m'excuse de vous répondre avec autant de décalage.

J'ai essayer le script et en fait il ne s’exécute pas.

L’orque je vais sur la page rien ne se passe elle reste blanche le script ne s'exécute pas.

Vous seriez pourquoi ?

Mammouth du PHP | 1684 Messages

30 juin 2016, 08:19

As tu bien une adéquation entre le nom du fichier texte dans le script et sur le serveur ?

quelques corrections du script, mais cela n'explique pas l'affichage blanc
<?php

$caseForVerif = ['.net' => 7, '.com' => 7, '.org' => 0, '.fr' => 13, '.ca' => 5, '.info' => 0, '.biz' => 1, '.de' => 45, '.eu' => 50, '.me.uk' => 30, '.co.uk' => 30, '.org.uk' => 40];
$strForVerif = ['.com' => 'No match for %s".', 'fr' => '%%%% No entries found in the AFNIC Database.', 'net' => 'No match for %s".', 'org' => 'NOT FOUND', 'ca' => '', 'info' => 'NOT FOUND', 'biz' => '', 'de' => '', 'eu' => '', 'me.uk' => '', 'co.uk' => '', 'org.uk' => ''];

$ndds = file('liste_ndd.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
foreach ($ndds as $ndd) {
    $result = '';
    if (!empty($theNdd)) {
        $theNdd = escapeshellcmd($ndd);
        $myArray = '';
        $anExt = substr($theNdd, strrpos($theNdd, '.'));
        $anExt = escapeshellcmd($anExt);
        exec('whois '.$theNdd, $myArray);
        $result .= '->> '.$theNdd;
        if ((strtolower($myArray[$caseForVerif[$anExt]]) == sprintf(strtolower($strForVerif[$anExt])))) {
            $result .= ' est libre';
        } else {
            $result .= ' est déjà réservé';
        }
        echo '<h3>' , str_replace('\\', '', $result) , '</h3>';
    }
}
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 8536 Messages

30 juin 2016, 09:04

Page blanche sur un script PHP => Tu as une erreur et elle est masquée par ton serveur.
Voici un tuto pour la trouver :
faq-tutoriels/page-blanche-script-php-c ... 73178.html
Quand tout le reste a échoué, lisez le mode d'emploi...

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8756 Messages

30 juin 2016, 10:36

tiens j'ai oublié d'indiquer la donnée sprintf ....
if ((strtolower($myArray[$caseForVerif[$anExt]]) == sprintf(strtolower($strForVerif[$anExt], $theNdd)))) {

balot ;)

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 62 Messages

30 juin 2016, 22:06

Je suis désolé mais cela ne marche toujours pas ne vous embêtez pas ça à l'air trop compliqué

Merci beaucoup