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 :

se lier au serveur ou pas Notice: Undefined index: password


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 268
    Par défaut se lier au serveur ou pas Notice: Undefined index: password
    Bonjour , j'ai un débat avec mon développeur sur la vérification des variables avant de les appeler.

    Naturellement , sur mon serveur local j'ai plein d'alertes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Notice: Undefined index: password
    Et sur le serveur de mon développeur , il n'y a pas car il utilise une configuration serveur différente.
    J'aimerais savoir quelle est la bonne pratique ici?
    Adapter le serveur à notre script ou adapter notre script à notre serveur?
    merci

  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
    Je dirais que votre débat n'est pas le bon :
    en production de toute facon, on n'affiche pas les erreurs ; donc pour la configuration du serveur c'est réglé.

    ensuite la question de l'initialisation des variables : il n'y a pas de necessité a le faire, cependant il est plus sérieux de le faire.
    La tendance amenée par PHP5.3 est clairement d'encourager à la faire.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    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
    Par défaut
    ensuite la question de l'initialisation des variables : il n'y a pas de necessité a le faire, cependant il est plus sérieux de le faire.
    Ce n'est pas pour chipoter, mais je dirais plutôt déclarer que d'initialiser.

    J'ai le sentiment que peu le font, et à titre personnel, je ne le fais pas, du moins, pas dans les pages, par contre je m'efforce de le faire dans un contexte objet.


    A coté de ça, que l'on déclare ou pas, le problème reste (pour ainsi dire) le même, cette erreur découle d'un manque de vérification au niveau du code (suivant l'erreur que tu montre).
    Exemple simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if (isset($_POST['password'])) {
    	// Ok : La variable existe
    }
    else {
    	// Erreur : La variable n'existe pas
    }
    Si on vérifie comme ceci, on n'aura jamais ce type d'erreur.

    Il n'est pas utile cependant de tout vérifier, mais le type d'erreur que tu montre suppose que cette donnée (password) viendrait d'un champ de saisie d'un formulaire recçu par $_POST.
    On se doit de vérifier l'existence de ce genre de données, c'est le minimum à mon sens.


    Pour ma part, j'adapte mon script par rapport au serveur, mais dans le fond c'est un peu des 2.
    Puis comme l'a souligné sabotage, concernant la gestion des erreurs, elle devrait être différente entre l'application sur serveur en production et celle qui se trouve en développement.
    Mais une erreur (même une erreur de notice) reste une erreur, et la théorie, ou la bonne pratique veut quelle soit réparée.
    Cependant, chacun à son approche sur ce point, c'est peut être ceci l'objet du débat.

  4. #4
    Membre éprouvé
    Inscrit en
    Juillet 2009
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 156
    Par défaut
    j'appuie le débat en disant qu'il faut le faire pour prendre des bonnes habitudes...

    Si on veut développer dans de bonnes conditions, on mets en alerte php: E_ALL | E_STRICT

    les notices ne gênent pas forcément a la bonne exécution du code, mais au moins ca permet de développer proprement...

    Et comme le dis sabotage, en prod, on affiche le minimum en alerte donc ca ne gène pas, mais si on veut être rigoureux dans son boulot on doit le faire... de la même manière qu'on vérifie qu'une variable est bien initialisé avant de l'utiliser

  5. #5
    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
    Ce n'est pas pour chipoter, mais je dirais plutôt déclarer que d'initialiser.
    Justement j'ai fais expres de dire "initialiser" puisqu'il s'agit pas de dire "j'utiliserais dans mon code une variable de type xxxx" mais juste de dire "la variable vaut 1235"
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    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
    Par défaut
    Citation Envoyé par sabotage
    Justement j'ai fais expres de dire "initialiser" puisqu'il s'agit pas de dire "j'utiliserais dans mon code une variable de type xxxx" mais juste de dire "la variable vaut 1235"
    Je suis d'accord, si cela concerne le cas de molesqualeux

    Citation Envoyé par sabotage
    La tendance amenée par PHP5.3 est clairement d'encourager à la faire.
    Sur ce point, j'en doute.
    Une déclaration, peut être, mais pas une initialisation.

  7. #7
    Membre actif
    Avatar de Marwindows
    Homme Profil pro
    Dev'Ops
    Inscrit en
    Mars 2010
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Dev'Ops

    Informations forums :
    Inscription : Mars 2010
    Messages : 57
    Par défaut
    Je pense qu'a partir du moment ou on anticipe la declaration de nos variables

    genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    variable =$_GET['variable'];
     
    if (variable == "")
          {
              variable="valeur";
           }
    On à pas besoin de verifier leurs initialisation

  8. #8
    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
    Par défaut
    Désolé ... au lieu de le modifier c'est dû créer un autre topic (ci-dessus).

  9. #9
    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
    Par défaut
    A mon sens il y a confusion entre déclaration et initialisation.

    Pour ma part, déclarer une variable équivaut à quelle soit NULL.
    Une initialisation, équivaut à affecter une valeur à une variable.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $ma_var = NULL; // Déclaration
    if (isset($ma_var)) {
    	echo '$ma_var : Existe';
    }
    else {
    	echo '$ma_var : N\'existe pas';
    }
    //
    echo $ma_var;
    Affiche -> $ma_var : N'existe pas

    Ou alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    class Classe {
    	public $ma_var; // Déclaration
     
    	public function __construct() {
    		if (isset($this->ma_var)) {
    			echo '$this->ma_var : Existe';
    		}
    		else {
    			echo '$this->ma_var : N\'existe pas';
    		}
    		//
    		echo $this->ma_var;
    	}
    }
    //
    $classe = new Classe();
    Affiche -> $this->ma_var : N'existe pas

    Dans les 2 cas les variables n'existent pas, un isset() retourne FALSE.
    Mais si on leur affectent une valeur, même vide, alors un isset() retournera TRUE.
    Ce n'est pas la même chose il me semble.

    Dans les 2 cas, si on ne fait pas de déclaration, les echo retourneront une erreur de Notice. (Pour -> echo $ma_var et echo $this->ma_var)

    La seule différence dans ces 2 cas, c'est que dans un contexte objet il n'est pas utile de définir une valeur Nulle à l'attribut, une simple déclaration suffit.


    Citation Envoyé par Ze AzAr
    je prends l'exemple de l'action script... si tu code bien tu fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var mon_nombre:Number; //j'initialise
    mon_nombre = 3; //je la déclare
    Sauf erreur, c'est l'inverse.
    Quand on déclare, on défini quel est sont type
    Quand on initialise, on lui affecte une valeur.
    Mais on peu déclarer et initialiser en 1 seule opération.


    Mais comme Php à un typage quasi nulle, rare sont ceux qui effectuent les déclarations, et j'en fais partie.
    Il n'y a que dans un contexte objet ou je déclare, car le contexte s'y prête mieux ... et encore que, si je scrute mes codes, il doit bien avoir des oublis par ci par là.
    On somme, le faible typage de Php n'invite pas vraiment à coder proprement, mais c'est une des raisons qui en fait son succès.


    @Marwindows
    Si $_GET['variable'] n'existe pas, Php va retourner une erreur de Notice.
    Pour éviter cette erreur, c'est de faire une vérification avec un : if isset()

  10. #10
    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
    On somme, le faible typage de Php n'invite pas vraiment à coder proprement, mais c'est une des raisons qui en fait son succès.
    Je ne dirais pas ça.
    Déclarer une variable et avoir un type fixe, ce n'est pas une contrainte énorme et ce n'est pas un concept difficile a appréhender.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. Réponses: 8
    Dernier message: 03/04/2007, 10h01
  2. Notice: Undefined index method post
    Par vanou dans le forum Langage
    Réponses: 8
    Dernier message: 07/03/2007, 09h33
  3. Pb erreur Notice: Undefined index: pseudo
    Par PAINCO dans le forum Langage
    Réponses: 15
    Dernier message: 19/02/2007, 18h20
  4. Notice: Undefined index
    Par abusatif dans le forum Langage
    Réponses: 4
    Dernier message: 08/02/2007, 09h03
  5. Réponses: 9
    Dernier message: 01/05/2006, 00h02

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