| |
|
Voir le sujet précédent :: Voir le sujet suivant
|
| Auteur |
Message |
| |
|
gcvoiron WRInaute impliqué

Inscrit le: 19 Oct 2005 Messages: 491
|
Posté le : Jeu Mai 08, 2008 17:47 Sujet du message: Tester la validité d'une URL |
|
|
Bonjour,
Pour tester si l'adresse d'un site marche, j'utilise la fonction ci-dessous :
| Code: |
$fp = @fopen($url, "r");
if (!$fp)
{
return FALSE;
}
else
{
fclose($fp);
return TRUE;
} |
Je pense qu'il y a plus simple et moins lourd, car selon l'état du serveur, le script est plus ou moins lent à tester.
Qu'en pensez-vous ?
Merci d'avance, Guillaume. |
|
| |
|
 |
KOogar WRInaute accro

Inscrit le: 16 Nov 2004 Messages: 2991 Localisation: Bangalore +4h30
|
Posté le : Ven Mai 09, 2008 7:48 Sujet du message: Tester la validité d'une URL |
|
|
Ta fonction est trés lente, il faut passer par une socket et lire seulement l'entête qui se trouve avant le code html. Si le code http renvoyé est 200, alors la page est disponible.
| Code: |
<?php
function url_validate( $link )
{
$url_parts = @parse_url( $link );
if ( empty( $url_parts["host"] ) ) return( false );
if ( !empty( $url_parts["path"] ) )
{
$documentpath = $url_parts["path"];
}
else
{
$documentpath = "/";
}
if ( !empty( $url_parts["query"] ) )
{
$documentpath .= "?" . $url_parts["query"];
}
$host = $url_parts["host"];
$port = $url_parts["port"];
// Now (HTTP-)GET $documentpath at $host";
if (empty( $port ) ) $port = "80";
$socket = @fsockopen( $host, $port, $errno, $errstr, 30 );
if (!$socket)
{
return(false);
}
else
{
fwrite ($socket, "HEAD ".$documentpath." HTTP/1.0\r\nHost: $host\r\n\r\n");
$http_response = fgets( $socket, 22 );
if ( ereg("200 OK", $http_response, $regs ) )
{
return(true);
fclose( $socket );
} else
{
// echo "HTTP-Response: $http_response<br>";
return(false);
}
}
}
?> |
|
|
| |
|
 |
gcvoiron WRInaute impliqué

Inscrit le: 19 Oct 2005 Messages: 491
|
Posté le : Ven Mai 09, 2008 16:16 Sujet du message: Tester la validité d'une URL |
|
|
Bonjour,
Merci pour cette réponse KOogar.
Par contre :
| Code: |
if ( ereg("200 OK", $http_response, $regs ) )
{
return(true);
fclose( $socket );
} |
Ne faut-il pas faire le fclose avant le return ? |
|
| |
|
 |
KOogar WRInaute accro

Inscrit le: 16 Nov 2004 Messages: 2991 Localisation: Bangalore +4h30
|
Posté le : Ven Mai 09, 2008 16:29 Sujet du message: Tester la validité d'une URL |
|
|
Oui il faut inverser  |
|
| |
|
 |
jfcontart WRInaute occasionnel

Inscrit le: 22 Sep 2007 Messages: 177
|
|
| |
|
 |
| |
|
|
|
|
Autres sujets de discussion :
|
|