";
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();
?>