IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Vérifier une URL


Sujet :

Langage PHP

  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 519
    Points : 311
    Points
    311
    Par défaut Vérifier une URL
    Bonjour,

    Je souhaiterai vérifier qu'une URL saisi par un utilisateur fonctionne.

    Dans un premier temps je vérifie la syntax de l'URL avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    filter_var($MonURL, FILTER_VALIDATE_URL)
    puis je test si l'URL pointe bien vers un serveur avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $ParseURL = parse_url($MonURL);
     
    if (fsockopen ($ParseURL['host'], 80, &$errno, &$errstr, 15))
    {
        // L'URL saisie est bonne
    }
    else
    {
         // L'URL saisie n'est pas bonne
    }
    Ça fonctionne quand l'URL est bonne mais lorsque l'URL ne pointe vers aucun serveur j'obtiens l'erreur suivante :

    Warning: fsockopen(): php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/diskut/public_html/class/class.php on line 201 Warning: fsockopen(): unable to connect to www.euroe1.fr:80 (php_network_getaddresses: getaddrinfo failed: Name or service not known) in /home/diskut/public_html/class/class.php on line 201
    Quelle est la bonne syntaxe pour ne pas voir ce message et juste afficher "L'URL saisie n'est pas bonne"

    Merci

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    En utilisant l'opérateur de suppression des erreurs '@'

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 519
    Points : 311
    Points
    311
    Par défaut
    Citation Envoyé par ABCIWEB Voir le message
    En utilisant l'opérateur de suppression des erreurs '@'
    En utilisant @, les warnings sont t'ils affichés dans les logs ?

  4. #4
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    En utilisant @, les warnings sont t'ils affichés dans les logs ?
    Normalement non.

    Théoriquement tu n'as pas besoin de mettre d'arobase.

    - En développement on affiche les messages d'erreurs pour justement être au courant d'une éventuelle erreur.
    Donc qu'il y ait ce warning normalement n'est pas gênant.

    - En production on affiche pas les erreurs, donc dans ce cas là aucun message ne sera affiché, mais il sera enregistré dans le fichier log (php_errors.log).
    Vu qu'ici ce n'est pas une erreur fatale le script continuera (quelque part en silence, l'utilisateur ne verra rien).


    Ou alors, si tu souhaite avoir un peu plus "la main" sur cette partie là, c'est à dire de gérer cette erreur de manière plus personnalisée, tu peux faire un try/catch.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $ParseURL = parse_url($MonURL);
     
    try {
        if (fsockopen ($ParseURL['host'], 80, &$errno, &$errstr, 15)) {
            // L'URL saisie est bonne
        }
        else {
            // L'URL saisie n'est pas bonne
        }
    }
    catch(Exception $e) {
        error_log('URL saisie incorrecte : '.$e->getMessage());
    }
    Théoriquement ici il n'y aura aucun message d'erreur d'affiché même si display_error est activée, on s'occupe soit même d'enregistrer l'erreur dans le fichier log.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Peut on vérifier une URL vers un fichier css
    Par Freud44 dans le forum ASP.NET
    Réponses: 9
    Dernier message: 17/08/2010, 16h34
  2. vérifier une URL
    Par Paul Van Walleghem dans le forum VB.NET
    Réponses: 8
    Dernier message: 06/04/2009, 15h04
  3. Comment vérifier une URL saisie dans mon formulaire ?
    Par cdevl32 dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 28/10/2007, 18h32
  4. [MySQL] Vérifier une URL dans la validation d'un formulaire
    Par groupejtt dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 30/11/2006, 11h48
  5. Vérifier une url, altenatives à fsockopen
    Par gendo dans le forum Langage
    Réponses: 4
    Dernier message: 14/09/2004, 21h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo