TESTER SI UNE URL EXISTE

neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 - 24 mai 2009 à 17:24
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 27 mai 2009 à 13:17
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/50068-tester-si-une-url-existe

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
27 mai 2009 à 13:17
normal que fsokopen n'ai pas d'instruction de fermeture en regard ?
thebigboss3 Messages postés 14 Date d'inscription vendredi 10 novembre 2006 Statut Membre Dernière intervention 16 juin 2009
24 mai 2009 à 18:43
Salut Neigedhiver,
Tout d'abord merci pour tes conseils
Je corrigerai ces erreurs dès que je le pourrais
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
24 mai 2009 à 17:24
Salut,

Il faut mettre une valeur par défaut au timeout, ou alors, le mettre avant le port.
En PHP, les arguments avec des valeurs par défaut doivent OBLIGATOIREMENT être en dernier dans la liste des arguments d'une fonction.

Voir à ce sujet les exemples 5 & 6 de cette page de doc :
http://fr2.php.net/manual/fr/functions.arguments.php

A noter que les variables $errno et $errstr sont les variables que PHP remplira avec les informations de l'erreur, si une erreur survient, et elles seront directement accessibles, puisqu'elles sont passées par référence à la fonction fsockopen()
Il n'est pas nécessaire de les définir (puisque c'est implicite en PHP) ni de leur assigner une valeur (puisque la fonction fsockopen() s'en chargera).

Tu as fait une faute de frappe dans le nom de la variable $errnum

Du coup, ta fonction peut tenir en une ligne de code :
function TestURL($url, $port 80, $timeout 20) {
return (bool) @fsokopen($url, $port, $errnum, $errstr, $timeout);
}

Finalement, cette source mériterait davantage d'être dans les snippets de Codyx plutôt qu'ici...