Articles

Le mois de la fonction PHP : desosser une URL

  • Ecrit par Rodolphe Eveilleau
  • dimanche 22 avril 2007
Image pour le titre du contenu

This document is also available in English en 


Dans les applications qui requiert la saisie d'une adresse Internet par un visiteur, il est important de pouvoir vérifier celle-ci.

Imaginez quelques instants une application de type annuaire. On demande au webmaster de saisir l'adresse de son site Internet.


Plusieurs conditions sont requises :
  • Utilisation du protocole HTTP uniquement.
  • Le nom de domaine doit être valide et existant.
  • La page saisie doit exister.

Imaginons que notre visiteur nous propose l'url : http://www.nexen.net

Exemple n°1 : Analyser l'url

<?php
 
 
$url = 'http://www.nexen.net/';
 
 
$parse_url = parse_url($url);
 
 
/**
 * Array
 * (
 *     [scheme] => http
 *     [host] => www.nexen.net
 *     [path] => /
 * )
 */
 
 
?>

Exemple n°2 : Vérifier le protocole


<?php
 
 
if ($parse_url['scheme'] != 'http') {
    /**
     * Le protocole saisie n'est pas accept&eacute;.
     */
}
 
 
?>

Exemple n°3 : Vérifier le nom de domaine

<?php
 
 
if (!dns_get_record($parse_url['host'])) {
    /**
     * Cette adresse n'existe pas.
     */
}
 
 
?>

La fonction dns_get_record() retourne un tableau vide dans le cas où aucun enregistrement DNS n'a été trouvé pour le nom de domaine et le sous domaine.

Exemple n°4 : Vérifier l'existence de la page


<?php
 
 
$headers = get_headers($url);
$status = $headers[0];
 
 
if (!preg_match('`200 OK`', $status)) {
    /**
     * La page n'existe pas
     */
}
 
 
?>

La fonction get_headers() retourne les en-têtes envoyés par le serveur. La première ligne permet de savoir si le document demandé existe. Dans notre cas on n'acceptera que le code 200. On refusera donc les redirections, les pages introuvables, etc.

A mémoriser :

  • La fonction parse_url() est disponible depuis PHP 4.
  • La fonction décompose l'URL, mais ne garantit pas que les morceaux seront valides
  • Et pour reconstruire une URL? patience....


< Précédent   Suivant >

Commentaires

Vous pouvez ajouter votre commentaire!


Vous devez vous connecter pour commenter