Ajax HTML 5 JavaScript Création site CMS Comment Design Logiciels Programmation RSS SQL Scripts Mobiles
Forum
COMMENT FAIRE
Anti Safari
Localiser portable
Galerie d'images
Redirection
Google Maps
Ecrire pour le Web
Passer intro video
CONCEPTION
Approche Ajax
Lecteur RSS
Bases SEO
DESIGN
Tutoriel Adsense
Essentiel Web design
SCRIPTS
Outils en ligne
FTP Synchronizer


PHP: Comment lire le code d'état HTTP d'une page Web?

Comment quand on veut accéder à distance par un script, aux pages d'un site, savoir si une page existe, s'il s'agit d'une redirection, si un lien est brisé? Ce problème est essentiel quand on écrit un script pour le Web.

Voici une fonction définie pour obtenir ce code d'état, basé sur une fonction PHP, fsockopen, compatible avec les versions actuelles de PHP. Un script est fourni pour en montrer l'utilisation, qui répond à des règles strictes.

Utiliser fsockopen

On utilise la fonction avec deux paramètres:
- L'URL du site, sans nom de fichier, par exemple: www.scriptol.fr.
- Un nom de fichier, avec éventuellement un répertoire.

Le domaine est passé en paramètre lors de l'appel de la fonction.

$server = "www.scriptol.fr"
$fp=fsockopen($server,80,$errno,$errstr,30);

Sans protocole ajouté, la fonction utilise TCP par défaut. On pourrait spécifier tcp://www.scriptol.fr ou udp://www.scriptol.fr.

Le second paramètre est le port, généralement 80, les deux suivants servent à récupérer le numéro et le message d'erreur éventuels. Le dernier est le temps d'attente maximal accordé pour obtenir une réponse, en millisecondes.

Une fois la connexion ouverte, on effectue la requête. Il s'agit dans notre cas d'accéder à un fichier, d'où la commande GET:

$page = "index.php"
$out="GET /$page HTTP/1.1\r\n"; 
$out.="Host: $server\r\n"; 
$out.="Connection: Close\r\n\r\n";
fwrite($fp,$out);

On spécifie la page, le serveur et l'on referme la connexion. Mais le fichier est obtenu ainsi que les en-têtes HTTP.

Pour récuperer ces données, on utilise la fonction fgets:

$content=fgets($fp);

On obtient une ligne de la forme:

HTTP/1.1 200 Ok

si le fichier est trouvé. Si l'URL est une redirection ce sera:

HTTP/1.1 301 Moved Permanently

Tandis que le code 404 indique que la page n'existe pas.

Ne reste qu'a extraire le code avec la fonction substr comme cela est fait dans le script donné ci-dessous.

Code source

Le code source du script a été testé avec ce site. Remplacer "www.scriptol.fr" par l'URL de votre site (sans / à la fin ni nom de fichier mais optionnellement avec le protocole tcp://).
De même remplacer le nom des pages par des pages de votre site, avec ou sans répertoire.

  • Source Scriptol.
  • Source PHP. Modifier l'extension pour exécuter le programme.

Voir aussi

  • Outil en ligne pour tester le code HTTP renvoyé par une URL.
Tweet
© 2008-2012 Scriptol.fr