Je viens de tomber sur un code source (extrait du script mydir):
CODE
function checkurl($url){
// vérification du protocole HTTP
if (!eregi("^http://", $url)) {
return FALSE;
}
$details = parse_url($url);
// vérification du port 80 lié au protocole HTTP
if (!isset($details['port'])) {
$details['port'] = "80";
}
// vérification du chemin
if (!isset($details['path'])) {
$details['path'] = "/";
}
// vérification de l'adresse du serveur
if (!ereg("[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+", $details['host'])){
$details['host'] = gethostbyname($details['host']);
}
// ouverture d'une connexion vers le serveur
if ($sock = _AT_fsockopen( $details['host'], $details['port'], $numero_erreur, $texte_erreur)){
$requete = "GET ".$details['path']." HTTP/1.1\r\n";
$requete .= "Host: ".$details['host']."\r\n\r\n";
// envoie d'une requête HTTP GET
fputs($sock, $requete);
// réception de la réponse du serveur
$str = fgets($sock, 1024);
while(!ereg('^HTTP/1.1 ', $str)){
$str = fgets($sock, 1024);
}
// fermeture de la connexion
fclose($sock);
list($http, $str, $texte) = explode(" ", $str, 3);
return TRUE;
}
return FALSE;
}
// vérification du protocole HTTP
if (!eregi("^http://", $url)) {
return FALSE;
}
$details = parse_url($url);
// vérification du port 80 lié au protocole HTTP
if (!isset($details['port'])) {
$details['port'] = "80";
}
// vérification du chemin
if (!isset($details['path'])) {
$details['path'] = "/";
}
// vérification de l'adresse du serveur
if (!ereg("[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+", $details['host'])){
$details['host'] = gethostbyname($details['host']);
}
// ouverture d'une connexion vers le serveur
if ($sock = _AT_fsockopen( $details['host'], $details['port'], $numero_erreur, $texte_erreur)){
$requete = "GET ".$details['path']." HTTP/1.1\r\n";
$requete .= "Host: ".$details['host']."\r\n\r\n";
// envoie d'une requête HTTP GET
fputs($sock, $requete);
// réception de la réponse du serveur
$str = fgets($sock, 1024);
while(!ereg('^HTTP/1.1 ', $str)){
$str = fgets($sock, 1024);
}
// fermeture de la connexion
fclose($sock);
list($http, $str, $texte) = explode(" ", $str, 3);
return TRUE;
}
return FALSE;
}
Et j'aimerais savoir ce que cela fait de plus qu'un simple (à part le bug pour les serveurs HTTP1.0 qui bouclent à l'infini et le HTTPS qui retourne faux):
CODE
function checkurl($url){
if(fopen($url,'r')) return true;
else return false;
}
if(fopen($url,'r')) return true;
else return false;
}
Merci de m'éclairer
