[Script PHP] Débugguage: Vérification URL

Résolu/Fermé
axel50397 Messages postés 113 Date d'inscription mercredi 8 août 2007 Statut Membre Dernière intervention 17 mars 2014 - 5 janv. 2008 à 17:17
DJ-CooLGuetta Messages postés 33 Date d'inscription lundi 30 août 2010 Statut Membre Dernière intervention 9 octobre 2010 - 6 oct. 2010 à 11:54
Bonjour,

Je suis à la recherche d'un script qui à son éxecution vérifie un ou plusieurs lien et renvoie l'etat du serveur distant...

Il se trouve que j'ai trouvé un script qui pourrait me servir, seulement, il ne fontionne pas, je ne trouve pas où et comment lui indiquer un ou plusieurs URL à vérifier...

Alors je demande l'aide de quelqu'un qui pourrait m'aider à comprendre pourquoi le script ne fonctionne pas, où et comment indiquer au script le ou les URL à vérifier...

J'ai posté les 2 fichiers (Un qui contient la fonction et celui qui contient les codes à retrourner comme 404, 401 ou 403...)

Check_URL.php => http://pastebin.ca/842702

Url_Codes.php (qui est inclut dans check_url.php) => http://pastebin.ca/842707


Merci de votre aide... Je vous en serais vraiment reconnaissant...
A voir également:

9 réponses

Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 922
5 janv. 2008 à 17:42
salut,

il va falloir être un peu plus précis !

qu'as-tu fait jusqu'à présent et où est-ce que ça bloque ?

il faut que appelle la fonction depuis ton script :
#
// call the function
#
$http = link_check($url);

puis que tu affiches ton résultat :
#
        while(list($k,$value)=each($http)) {
#
                if ($k=="code") echo "[".$k."]: ".$codes[$value]."<br>";
#
                else echo "[".$k."]: ".$value."<br>";
#
        }

as-tu fait quelque chose de ce goût là ?
0
axel50397 Messages postés 113 Date d'inscription mercredi 8 août 2007 Statut Membre Dernière intervention 17 mars 2014 16
5 janv. 2008 à 17:56
Bonsoir,

Oui, ligne 20 et 23... Sur le script Check_Url.php

Merci beaucoup !
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 922
5 janv. 2008 à 18:09
Merci beaucoup !

???
heu…

merci pour quoi ?

as-tu réussi ?
0
axel50397 Messages postés 113 Date d'inscription mercredi 8 août 2007 Statut Membre Dernière intervention 17 mars 2014 16 > Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016
5 janv. 2008 à 18:12
Bah non, j'ai juste indiqué que j'avais déjà mis ce que tu m'a proposé...

Et merci de t'être quand même penché sur mon probleme...

C'est tout...
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 922
5 janv. 2008 à 18:16
a vi d'accord !!!

donc il nous reste le principal : ton problème !

peux-tu nous montrer ton code ?
car les deux fichiers que tu nous as montré ne suffisent pas, il faut que tu codes ta propre page puis que tu appelles la fonction depuis ta page.
0
axel50397 Messages postés 113 Date d'inscription mercredi 8 août 2007 Statut Membre Dernière intervention 17 mars 2014 16
5 janv. 2008 à 20:05
Alors voila...

J'ai que 2 pages, une page qui contient les codes, et une page qui lance le script et qui le traite...:

<?php
///*
# check_url.php
# -------------
# argument: $url
#
# annex: "url_codes.php"
# this file allows a nice display of the returned http status code
# for more informations, have a look at the W3C site
# http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html#sec6.1.1

# This function performs the url check by:
# 1) opening a socket
# 2) sending a GET request (HEAD didn't work with some servers)
# 3) collecting data

# usage:

//
$url = "www.google.fr";
//

// call the function
$http = link_check($url);
##
// print the result
echo "<TABLE border='1' cellpadding=3 cellspacing=0>\n";
echo "<TR align='left' valign='top'><TD>\n";
echo "Current check: <b>".$url."</b>";
echo "</TD></TR>\n";
echo "<TR align='left' valign='top'><TD>\n";
while(list($k,$value)=each($http)) {
if ($k=="code") echo "[".$k."]: ".$codes[$value]."<br>";
else echo "[".$k."]: ".$value."<br>";
}
##
echo "</TD></TR>\n";
echo "<TR>\n";
echo "<TD align='left'>\n";
echo "More informations:<br><a
href=\"http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html#sec6.1.1\"
TARGET='_blank'> <small>Hypertext Transfer Protocol -- HTTP/1.1</a><br>";
echo "<a href=\"http://www.w3.org/\">World Wide Web Consortium
[W3C]</a></TD>\n";
echo "</TR>\n";
echo "</TABLE>\n";

//*/

require_once 'url_codes.php';

function link_check($url)
{
// timeout_limit can be set manually just below to control how long
// we want to wait for a header (software)

set_time_limit(60);
$timeout_limit = 10000;

$parts = parse_url($url);

// port 80 is the WWW port
// when there is no path the funtion returns an error (so we add a slash
// to the end of adresses like https://www.hotbot.com/ )
if(!$parts[port]) $parts[port] = 80;
if(!$parts[path]) $parts[path] = "/";

if($sockd = fsockopen($parts[host], 80, &$errno, &$errstr, 30))
{
set_socket_blocking($sockd, 1);
fputs($sockd, "GET ".$parts[path]." HTTP/1.0\n");
fputs($sockd, "Host: ".$parts["host"]."\n\n");

$timeout = 0;
while (!feof($sockd))
{
$line = fgets($sockd, 128);
$file .= $line;
if(substr($line,0,4)=="HTTP") {
$http["version"] = substr($line,5,3);
$http["code"] = substr($line,9,3);
$http["status"] = trim(substr($line,13));
// If we get a redirection code we don't close the socket
// and wait for a Location: header to come
if ($http["code"] <300 || $http["code"]> 400)
$timeout = $timeout_limit + 1;
} elseif (eregi("Content-Location",$line)) {
// Catch the location Header and close the socket
$http["location"] = substr($line,17);
$timeout = $timeout_limit + 1;
}
$timeout++;
}

fclose($sockd);
if (empty($http["location"])) $http["location"] = $url;
if (!is_array($http)) {

/* Handle the case where the check timed out or if
* the socket could not be opened
* 999 is arbitrary ...
*/
$http = array();
$http["code"] = 999;

} else {

/* Handle the case where the server gives a line like:
* HTTP 200 Document follows
* i.e without a version number
* HTTP/1.1 200 OK
*/
if ($http["code"] == 0 && $http["version"] == 200)
$http["code"] == 200;
}
return $http;
}
}

?>
---------
C'est un upgrade d'un des liens... J'ai décommenter l'appel de la fonction au dessus, et ajouter la valeur de $url...

Pour moi, ce qui est entre ## représente le retour de la fonction, et les mises à jour sont en gras au début...

J'ai éssayer sur 3 hebergeurs différents, j'ai pas vraiment de résultats, la fonction n'a même pas l'air de tourner...

3 sites de test:

http://virtualinfo.hostheberge.net/Statut_URL/urlcheck.php
http://virtualinfo.freehostia.com/urlcheck.php
http://virtualinfo.hyperphp.com/urlcheck.php

PS: Vous pouvez éditer directement les fichiers sur HyperPhp, ajouter des dossiers pour proposer vos idées et corriger la mienne...

http://virtualinfo.freehostia.com/yehe/
[Login: Test - Mdp - test]
Il suffit de cliquer sur un fichier, et d'enregistrer en cliquant sur la disquette en haut de la page...
Et je verrais les modifications...

Merci de ton aide...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 922
6 janv. 2008 à 03:12
salut,

désolé j'ai pas le temps d'explorer les fonctionnalités de ton éditeur.
j'ai testé et corrigé, voila une version en ligne et les sources.

c'est pas très pédagogique, mais bon…

j'ai surtout corrigé des erreurs de code (qui n'est pas des plus jolis…) et ajouter une condition pour gérer les adresses invalides.

si tu as des questions, n'hésite pas !
0
axel50397 Messages postés 113 Date d'inscription mercredi 8 août 2007 Statut Membre Dernière intervention 17 mars 2014 16
6 janv. 2008 à 13:16
Heellooooo,

Wahou, ca marche \o/
Merci bcp ^^

Cette page m'aidera pour faire un check sur demande... Mais la question de base, était une page qui vérifie automatiquement 3 ou 4 adresses différentes et qui les retourne (juste le $code[XXX]) sur plusieurs cellules d'un tableau...

Le but étant de donner l'état de plusieurs miroirs sur la page principale...

Sinon, je peux essayer dans url_codes:
$url = array()
$url[miroir1] = url1
$url[miroir2] = url2
$url[miroir3] = url3

Ensuite je fais comment pour utiliser les données de ton index avec une page classique, un tableau simple avec 3 url...?

-----------------------------------------------------------------------------------
Miroir 1 | Emplacement Web du miroir | Barre de chargement |
-----------------------------------------------------------------------------------

A la fin du test qui durera quelques millisecondes (Je vais peut etre mettre un retard d'execution), la barre de chargement (non relative au temps de chargement restant) disparait pour laisser le résultat du test apparaitre...


Merci de ton aide Dalida =D
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 922
6 janv. 2008 à 13:28
salut,

je comprends pas tout…

une page qui vérifie automatiquement 3 ou 4 adresses différentes et qui les retourne
et bien tu testes tes adresses l'une après l'autre…
effectivement, un tableau sera sans doute le mieux.
tu boucles dessus en appelant la fonction à chaque fois ou tu modifies la fonction pour qu'elle soit capable de traiter un tableau comme paramètre et qu'elle te renvoie un tableau de réponses.

Ensuite je fais comment pour utiliser les données de ton index avec une page classique, un tableau simple avec 3 url...?
tu intègres classiquement ton code php dans ta page html.
si la longueur de ton tableau est fixe il suffit d'écrire le tableau en html et de tester les valeurs avant de remplir les cellules.
si ta longueur du tableau est variable, une petite boucle sur le tableau de résultat pour afficher chaque ligne (en gros comme dans le script initial).
0
axel50397 Messages postés 113 Date d'inscription mercredi 8 août 2007 Statut Membre Dernière intervention 17 mars 2014 16
24 avril 2008 à 22:46
Merci de ton aide, j'y suis finalement arrivé :)
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 922 > axel50397 Messages postés 113 Date d'inscription mercredi 8 août 2007 Statut Membre Dernière intervention 17 mars 2014
25 avril 2008 à 01:21
salut,

et comment as-tu fait ?
-;o)
0
axel50397 Messages postés 113 Date d'inscription mercredi 8 août 2007 Statut Membre Dernière intervention 17 mars 2014 16
25 avril 2008 à 13:00
Bonjour,

J'ai fais exactement ce que tu m'avais dit. Des boucles en masses, + une barre de chargement pour éviter de tout voir
Merci de ton aide !
0
DJ-CooLGuetta Messages postés 33 Date d'inscription lundi 30 août 2010 Statut Membre Dernière intervention 9 octobre 2010 1
6 oct. 2010 à 11:54
bonjours

je voie que se sujets est résolu et que il y a des personnes pouvant m'aider sur mon sujet serait il possible que vous y jetez un coup d'oeil

https://forums.commentcamarche.net/forum/affich-19399609-souci-php-page-login#p19399609

merci d'avance
0