Vous êtes ici Codes PHP et MySQL > URL > Verifie la validite d'une adresse internet

 

Verifie la validite d'une adresse internet

Ce code n'est pas de moi, je l'ai pris sur un annuaire qui fais des verification de liens, perso je n'ai pas trouvé mieux et vous pourrez voir que ce code n'est pas tout jeune. Ce code fait tout ce que l'on peut imaginer pour vérifier que l'url sur laquel nous travaillons est bien en ligne. Dans mon exemple j'ai pris un nom de domaine qui est une redirection : www.phpsources.net. Le résultat du script une fois lancé ne s'est pas fait attendre plus de 2 secondes:
La page a été déplacée momentanément! (302)
Redirection vers : http://www.phpsources.org

Je pense que ce code devrait vous aider à trier vos urls. Vous n'avez qu'un seul paramètre à fournir: l'url du site!!
 
KOogar
Site de l'auteur voir
[65] sources en PHP voir
Code vu 4078 fois
Enregistré le 05 Avril 2009
  • Digg ce code sur digg.com
  • Bookmark ce code sur del.icio.us
  • Bookmark ce code sur Google
  • Bookmark ce code sur Yahoo
  • Ajoute Verifie la validite d'une adresse internet
  • Partage ce code sur Facebook
 
 
 
 

Code Source


01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
 
<?php
/******************************************************************************/
/*                                                                            */
/*                       __        ____                                       */
/*                 ___  / /  ___  / __/__  __ _____________ ___               */
/*                / _ \/ _ \/ _ \_\ \/ _ \/ // / __/ __/ -_|_-<               */
/*               / .__/_//_/ .__/___/\___/\_,_/_/  \__/\__/___/               */
/*              /_/       /_/                                                 */
/*                                                                            */
/*                                                                            */
/******************************************************************************/
/*                                                                            */
/* Titre          : Verifie la validite d'une adresse internet                */
/*                                                                            */
/* URL            : http://www.phpsources.org/scripts503-PHP.htm              */
/* Auteur         : KOogar                                                    */
/* Date édition   : 05 Avril 2009                                             */
/* Website auteur : http://www.koogar.fr                                      */
/*                                                                            */
/******************************************************************************/


  define("TEST_URL",true);
  $url 'http://www.phpsources.net';


            $url_parsee parse_url($url);
            $host $url_parsee["host"];
            $path = isset($url_parsee["path"]) ? trim($url_parsee['path']) : '';

            //verification du lien et affichage du resultat
            //affichage du lien
            ?>
            <a href="<?php echo $url?>" target="_blank"><?php echo $url?>
</a>
            <br />
            <br />
            
            <?php
            //on verifie le lien
            $tab_return check_connect($host,$path);
            //on affiche le resultat
            echo $tab_return["message"];



 function check_connect($host,$path)
//verifie la validite de l'adresse, c'est a dire on regarde si le site existe
// bien...
//on rend dans un tableau :
// "statut" : 0 si KO, 1 si redirect ou bien pour faire passer en local, 2 si
// OK
// "code" : code HTTP

{
    if(!TEST_URL)
    //si on travaille en local, on ne se connecte pas
    {
        $tab_return["statut"] = 1;
        $tab_return["code"] = 0;
        $tab_return["message"] = 
"<font color=\"#ff9900\">Pas de test de connexion</font>\n";
        return $tab_return;
    }
    $connect 0;
    $no_code 0;
    //connexion par socket
    if ($fp fsockopen($host,80))
    {
        //traitement du path
        if(substr($path,strlen($path)-1) != '/')
        {
            if(!ereg("\.",$path))
                $path .= "/";
        }
        //envoi de la requete HTTP
        fputs($fp,"GET ".$path." HTTP/1.1\r\n"); 
        fputs($fp,"Host: ".$host."\r\n");
        fputs($fp,"Connection: close\r\n\r\n");
        //on lit le fichier
        $line fread($fp,255);
        $en_tete $line;
        
//on lit tant qu'on n'est pas la fin du fichier ou qu'on trouve le debut du code
// html...
        while (!feof($fp) && !ereg("<",$line) )
        {
            $en_tete .= $line;
            $line fread($fp,255);
        }
        fclose($fp);
        //on switch sur le code HTTP renvoye
        $no_code substr($en_tete,9,3);
        switch ($no_code)
        {
            // 2** la page a été trouvée
            case 200 :    $message "OK";
                        $color "#33cc00";
                        $connect 2;
                        break;
            case 204 :    $message "Cette page ne contient rien! (204)";
                        $color "#ff9966";
                        break;
            case 206 :    $message "Contenu partiel de la page! (206)";
                        $color "#ff9966";
                        break;
            // 3** il y a une redirection
            case 301 :    $message "La page a été déplacée définitivement! (301)";
                        $message .= seek_redirect_location($en_tete);    
                        $color "#ff9966";
                        $connect 1;
                        break;
            case 302 :    $message "La page a été déplacée momentanément! (302)";
                        $message .= seek_redirect_location($en_tete);
                        $color "#ff9966";
                        $connect 1;
                        break;
            // 4** erreur du coté du client
            case 400 :    $message "Erreur dans la requête HTTP! (400)";
                        $color "#ff0000";
                        break;
            case 401 :    $message "Authentification requise! (401)";
                        $color "#ff0000";
                        break;
            case 402 :    $message "L'accès à la page est payant! (402)";
                        $color "#ff0000";
                        break;
            case 403 :    $message "Accès à la page refusé! (403)";
                        $color "#ff0000";
                        break;
            case 404 :    $message "Page inexistante! (404)";
                        $color "#ff0000";
                        break;
            // 5** erreur du coté du serveur
            case 500 :    $message "Erreur interne au serveur! (500)";
                        $color "#ff0000";
                        $connect 1;
                        break;
            case 502 :    $message "Erreur à cause de la passerelle du serveur! (502)";
                        $color "#ff0000";
                        break;
            // cas restant
            default :    $message "Erreur non traitée dont le numéro est : $no_code!";
                        $color "#000000";
                        break;
        }
    }
    else
    {
        $message "Impossible de se connecter par socket";
        $color "#ff0000";
    }
    //creation du tableau avec les valeurs a rendre
    $data_return["statut"] = $connect//la page est OK ou KO (200 => OK sinon KO)
    $data_return["code"] = $no_code//code HTTP renvoye
    $data_return["message"] = "<font color=\"".$color."\">".$message."</font>\n"
//message a afficher
    return $data_return;
}


function seek_redirect_location($header)
//recherche la location de la redirection si l'erreur HTTP renvoyee commence par
// 3
{
    $location "";
    $tab_header explode("\n",$header);
    for ($i=0;$tab_header[$i];$i++)
    {
        $line split(":",$tab_header[$i],2);
        if(eregi("location",$line[0]))
        {
            $location trim($line[1]);
            break;
        }
    }
    if ($location)
        return 
"<br>Redirection vers :<br><a href=\"$location\" target=\"_blank\">".$location.
"</a>\n";
    else
        return "<br>Aucune adresse de redirection n'a été trouvée...\n";
}
?>

 

Fonctions du code

: Définit une constante - (PHP 4, PHP 5)
: Analyse une URL et retourne ses composants - (PHP 4, PHP 5)
: Détermine si une variable est affectée - (PHP 4, PHP 5)
: - (PHP 4, PHP 5)
: Affiche une chaîne de caractères - (PHP 4, PHP 5)
: Ouvre une socket de connexion Internet ou Unix - (PHP 4, PHP 5)
: Calcule la taille d'une chaîne - (PHP 4, PHP 5)
: Retourne un segment de chaîne - (PHP 4, PHP 5)
: Expression rationnelle standard - (PHP 4, PHP 5)
: Alias de fwrite() - (PHP 4, PHP 5)
: Lecture du fichier en mode binaire - (PHP 4, PHP 5)
: Teste la fin du fichier - (PHP 4, PHP 5)
: Ferme un fichier - (PHP 4, PHP 5)
: Coupe une chaîne en segments - (PHP 4, PHP 5)
: Scinde une chaîne en un tableau, grâce à une expression rationnelle - (PHP 4, PHP 5)
: Recherche par expression rationnelle insensible à la casse - (PHP 4, PHP 5)
Commentaires
Merci pour ce script et j'apprécie sur ce site qu'il soit suivi par la partie "fonctions du code source".
Par contre pour ce script j'avais compris qu'il vérifiait l'ensemble des URL du site dont l'URL est entrée ? Comment faire ? Merci.
 
pour ca vous avez peut-etre des scripts tout fait sur le Net qui crawle un NDD et mettent les urls en BDD.
Le script ci dessus fait une recherche sur 1 seule url.
Je vous laisse le soin de sotcker vos urls avant (BDD, fichier texte, fichier XML...)
regarder comment est fait un generateur de sitemap, ca devrais vous aider: http://enarion.net/google/
 
merci beaucoup, simple et clair
 
koogar

pourquoi une 302 ? fais une 301 je n'ai pas besoin de t'apprendre que c'est mieux côté seo idea

rudddy :-)
 
Ajouter un commentaire
Code de sécurité

Attention: Les champs marqués d'une étoile * sont obligatoires
 
Librairie PHP

Connexion

 
 

URL

 
 

PHP

 
 
 
 
    Offres d'emploi

Plus de 500 offres d'emploi PHP/MySQL

Offres d'emploi
 
    Editeur PHP
 
        Publicité