PcKULT.NET - La référence en informatique

  • Increase font size
  • Default font size
  • Decrease font size
  • default color
  • black color

PcKULT.NET - Recrute

PcKULT.NET est présentement à la recherche de passionnés d'informatique qui veulent se greffer à l'équipe de PcKULT.NET. Si l'aventure vous intéresse, veuillez communiquer avec nous.

webmaster@pckult.net


Tester et valider une URL sous PHP

E-mail Imprimer PDF
Vous est-il déjà arriver de vouloir vérifier la validité d'un adresse http:// ainsi que de vérifier si celle-ci était toujours en fonction ? Eh bien si c'est le cas, voici une petite fonction que vous pourrez intrégrer à votre script php afin de tester les URL désirer.

PHP :
<?php

function is_valid_url($url)
{
    $url = @parse_url($url);

    if (!$url)
    {
        return false;
    }

    $url = array_map('trim', $url);
    $url['port'] = (!isset($url['port'])) ? 80 : (int)$url['port'];
    $path = (isset($url['path'])) ? $url['path'] : '';

    if ($path == '')
    {
        $path = '/';
    }

    $path .= (isset($url['query'])) ? "?$url[query]" : '';

    if (isset($url['host']) AND $url['host'] != gethostbyname($url['host']))
    {
        if (PHP_VERSION >= 5)
        {
            $headers = get_headers("$url[scheme]://$url[host]:$url[port]$path");
        }
        else
        {
            $fp = @fsockopen($url['host'], $url['port'], $errno, $errstr, 30);

            if (!$fp)
            {
                return false;
            }
            fputs($fp, "HEAD $path HTTP/1.1\r\nHost: $url[host]\r\n\r\n");
            $headers = fread($fp, 4096);
            fclose($fp);
        }
        $headers = (is_array($headers)) ? implode("\n", $headers) : $headers;
        return (bool)preg_match('#^HTTP/.*\s+[(200|301|302)]+\s#i', $headers);
    }
    return false;
}

?>
 
** UPDATE : la ligne 26 à été modifier pour évité une erreur lorsque l'URL est invalide.
        $fp = fsockopen($url['host'], $url['port'], $errno, $errstr, 30);
        $fp = @fsockopen($url['host'], $url['port'], $errno, $errstr, 30);

Voici maintenant un exemple d'utilisation de cette fonction :
<?php

     if (is_valid_url('http://www.pckult.net'))
     {
           echo('Valide!');
     }

?>

{mos_fb_discuss:no_discuss}



Ajouter cette page à votre Digg-Like préféré
Reddit! Del.icio.us! JoomlaVote! Google! Live! Facebook! Technorati! StumbleUpon! Spurl! Furl! Blogmarks! Yahoo! FeedMeLinks!
Commentaires (4)Add Comment
...
Ecrit par JuS, novembre 16, 2007
C'est peut être à cause du paramétrage proxy de mon entreprise ...
...
Ecrit par Dave Lizotte, novembre 15, 2007
Il devrait etre différent car gethostbyname($url['host']) retourne l'IP et $url['host'] contient l'adresse URL!
...
Ecrit par JuS, novembre 15, 2007
Bonjour,

Code très utile mais il y a une condition que je ne comprends pas. Pourquoi faut-il que :
$url['host'] != gethostbyname($url['host'])

Dans l'exemple ci-dessus j'ai $url['host']="www.pckult.net" et gethostbyname($url['host'])="www.pckult.net" du coup je ne peux pas tester la validité de l'URL ...
Gdand amateur débutant :p
Ecrit par jouille, octobre 06, 2007
Tout d'abord bonjour et merci pour ce super script.
Je viens de récupérer ce joli script, et j'ai 2 problème que jen'arrive aps a résoudre, donc j'espère que vous pourrez y apporter une rep.
* Le premier, est que quand l'url est pas valide, j'obtient le message d'rreur suivant:
Warning: fsockopen(): unable to connect to serveur.com in c:program fileseasyphp1-8www
ewfolderscript test url.php on line 31
* le second, c'est que si le lien est valide, je voudrais l'afficher, pour sa, j'ai écrit la ligne suivant:
echo '';
J4ai essayé comme sa, ou en utilisant un lien URL, et dans les 2 cas, j'obtient une petite croix rouge qui me dit qu'il ne trouve pas le lien. Voila, si quelque'un pouvait m'expliquer, se serait grandement gentil de sa part. Merci

Ecrivez un commentaire
quote
bold
italicize
underline
strike
url
image
quote
quote
smile
wink
laugh
grin
angry
sad
shocked
cool
tongue
kiss
cry
Réduire l'éditeur | Agrandir l'éditeur

busy
Mis à jour ( Jeudi, 15 Novembre 2007 05:24 )  

Sondage

Votre fournisseur Internet
 

Publicités