"; gros_titre("Tests des sites"); debut_gauche(); debut_boite_info(); function CreerLiens($admin_lien, $nba, $nbr_sites) { global $debut; echo "
"; if ($nbr_sites >= ($nba+1)) { //liens vers pages precedentes/suivantes if ($debut-$nba >= 0 ) { echo " <<\n "; echo " < "; } $p = 1; for ($i=0 ; $i < $nbr_sites ; $i+=$nba) { if (($debut/$nba) == ($p-1)) echo " $p "; else echo " $p\n "; $p++; } if ($debut+$nba < $nbr_sites) { echo " > "; $pos = ($nbr_sites - ($nbr_sites % $nba)); if (($nbr_sites % $nba) == 0) $pos = $pos - $nba; echo " >>\n "; } echo "\n

"; } } //code des 2 fonctions seek_redirect_location & check_connect appartiennent à phpmyannu //publiées sous licence GPL, accessible à l'adresse http://www.creation-de-site.net //modifié pour SPIP function check_connect($url) //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 // "message" : message { $url_parsee = @parse_url($url); $host = trim($url_parsee["host"]); $path = trim($url_parsee["path"]); $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 !"; $color = "#ff9966"; break; case 206 : $message = "Contenu partiel de la page !"; $color = "#ff9966"; break; // 3** il y a une redirection case 301 : $message = "La page a été déplacée définitivement"; $message .= seek_redirect_location($en_tete); $color = "#ff9966"; $connect = 1; break; case 302 : $message = "La page a été déplacée momentanément"; $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 !"; $color = "#ff0000"; break; case 401 : $message = "Authentification requise !"; $color = "#ff0000"; break; case 402 : $message = "L'accès à la page est payant !"; $color = "#ff0000"; break; case 403 : $message = "Accès à la page refusé !"; $color = "#ff0000"; break; case 404 : $message = "Page inexistante !"; $color = "#ff0000"; break; // 5** erreur du coté du serveur case 500 : $message = "Erreur interne au serveur !"; $color = "#ff0000"; $connect = 1; break; case 502 : $message = "Erreur à cause de la passerelle du serveur !"; $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"; $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"] = "".$message."\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 " ici"; } echo ""; echo "

".propre("Cette page permet de {{tester les sites}} référencés dans SPIP. Le script n'effectue aucune modification : {{à vous de faire selon votre bon désir}}. Auteur : silicium@japanim.net, webmaster de Japanim.net."); echo ""; fin_boite_info(); debut_droite(); echo ""; if ($connect_statut == "0minirezo") { //nbre sites par page $nba = 20; //nbre de sites référencés $res2 = spip_query("SELECT COUNT(id_syndic) FROM spip_syndic"); $resultat2 = spip_fetch_array($res2); $nbr_entrees = $resultat2[0]; if (empty($debut)) $debut = 0; //construction de la requête $req = "SELECT * FROM spip_syndic"; //utilisé dans une v2 du script... if (! empty($id_rubrique)) $req .= " WHERE id_rubrique=$id_rubrique"; $req .= " ORDER BY id_syndic LIMIT $debut, $nba"; $res = spip_query($req); while($resultat = spip_fetch_array($res)) { echo "- " . $resultat["nom_site"] . ""; $tab_return = check_connect($resultat["url_site"]); echo " : " . $tab_return["message"] . "
"; } CreerLiens("test_sites.php3?debut=", $nba, $nbr_entrees); } else echo "Vous n'avez pas accès à cette page."; echo "
"; fin_page(); ?>