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 :

PHP5 et erreur Notice :Undefined variable


Sujet :

Langage PHP

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 49
    Par défaut PHP5 et erreur Notice :Undefined variable
    Bonjour à tous,
    Je viens de passer à php5 depuis peu et je modifie peu à peu mes pages PHP.

    Voila j'ai bien compris qu'il fallait declarer toutes les variables et je m'efforce peu à peu de le faire.

    Mais il y a une chose que je comprends pas comme par exemple lors d'un passe de variable via url rewritting.

    Je passe ma variable et en debut de script je test si elle existe en faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if (isset($_GET['nom_categorieurl'])){$nom_categorieurl = $_GET['nom_categorieurl'];}
     
    if (isset($_GET['recherche'])){$recherche = $_GET['recherche'];}
    ce qui supprime mon erreur Notice. Mais si aprés je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo "<title>titre de ma page $nom_categorieurl $recherche</title>";

    Faut il tester à chaque fois si la variable existe ou peut on le faire une fois en debut de code et desactiver cette erreur de variable non declarée pour tt le reste du code ?

    Cordialement,
    bypbop

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Sois logique, la réponse depend donc de ton cas.
    Par exemple, on peut imaginer que
    - si "titre" n'est pas passé dans l'url, tu mettras un titre par défaut à la page
    - si "recherche" n'est pas passé dans l'url, tu n'executeras pas la requête SQL de recherche.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 242
    Par défaut
    D'accord avec sabotage.
    Il suffit que tu initialises tes valeurs dans tous les cas, avec des valeurs par défaut (chaine vide ?), et pas uniquement dans ton if.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $nom_categorieurl = "";
    if (isset($_GET['nom_categorieurl'])) {
     $nom_categorieurl = $_GET['nom_categorieurl'];
    }
    Après ton isset, du coup, tu es sûr que quoi qu'il arrive, ta variable est initialisée. Et donc, jamais de warning. Moralité : ne jamais utiliser des variables tant que l'on est pas sur qu'elles soient bien initialisées.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Plus court en version ternaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $nom_categorieurl = isset($_GET['nom_categorieurl']) ? $_GET['nom_categorieurl'] : 'valeur par défaut';{
    Mais il ne faut pas mettre une valeur par défaut dans tous les cas comme expliqué au dessus.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 49
    Par défaut
    ok merci à tous je vais essayer tt ca ;-)
    faut juste s'habituer à coder en PHP 5

    Cordialement,
    bypbop

  6. #6
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    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 418
    Par défaut
    Citation Envoyé par bypbop Voir le message
    faut juste s'habituer à coder en PHP 5
    Oui enfin le principe de préciser l'origine d'une variable et de lui affecter (la plupart du temps) une valeur par défaut n'est pas spécifique à php5. On pouvait déjà faire ainsi en php4 et c'était même très recommandé. Mais php4 autorisait par facilité de ne pas le faire ce qui pouvait engendrer assez facilement des problèmes de sécurité. C'est pour avoir un code plus sûr que php5 renvoie maintenant des notices.
    En d'autres termes, on dit que l'on code en php5 quand on emploie des fonctions ou classes qui sont apparues avec php5 mais sur le principe du contrôle des variables rien n'a changé : moins tu contrôle tes variables et plus tu risque d'avoir de mauvaises surprises, quelque soit les langages et leur version. Php5 incite simplement à plus de rigueur à ce niveau, mais c'est loin d'être la principale évolution par rapport à php4.

Discussions similaires

  1. [PHP 5.3] Erreur -> Notice: Undefined variable: status
    Par donaldf dans le forum Langage
    Réponses: 2
    Dernier message: 21/01/2010, 19h03
  2. erreur: "Notice: Undefined offset:"
    Par Sh1v3r dans le forum Langage
    Réponses: 2
    Dernier message: 17/06/2006, 22h48
  3. Notice: Undefined variable
    Par oranoutan dans le forum Langage
    Réponses: 19
    Dernier message: 21/12/2005, 22h28
  4. Notice: Undefined variable
    Par kayn dans le forum Langage
    Réponses: 2
    Dernier message: 03/10/2005, 20h44
  5. Réponses: 3
    Dernier message: 22/09/2005, 11h24

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