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 :

condition invalide validée


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Par défaut condition invalide validée
    Bonjour,
    L'affaire est tres simple, j'ai un if qui devrait etre faux, mais qui execute tout de meme son bloc de code :
    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
    if (isset($_GET['logout'])) 
    	$_SESSION['login'] = 0;
     
    echo '1-$_SESSION[login] = '.$_SESSION['login'];
     
    if (isset($_SESSION['login']) && ($_SESSION['login'] == 'check')
    && ($_SERVER['PHP_AUTH_USER'] == $login['user']) && ($_SERVER['PHP_AUTH_PW'] == $login['passwrd'])) {
    	$_SESSION['login'] = mktime();
    	echo '<br />2-$_SESSION[login] = '.$_SESSION['login'];
    	}
     
    echo '<br />3-$_SESSION[login] = '.$_SESSION['login'];
    /****output:
    1-$_SESSION[login] = 0
    2-$_SESSION[login] = 1215699935
    3-$_SESSION[login] = 1215699935
    */
    SESSION[login] est donc a 0, pourtant, le if est valide, et login se voit reattribuer une valeur.

    La reponse est sans doute evidente, mais elle m'echappe. Peut etre est ce trop evident

    Merci
    Z.

  2. #2
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Bonjour,

    Si tu fais un if (0=='check') tu verras qu'il passera dedans aussi.

    Pourquoi ? parce que dans cette condition, php essaie de transformer 'test' en int. Et le résultat est... 0 justement ! Pour éviter ça, tu as plusieurs solutions :
    - initialiser $_SESSION['login'] avec '0' et pas 0
    - transformer $_SESSION['login'] en chaîne de caractères en faisant (string)$_SESSION['login']
    - utiliser l'opérateur de comparaison === qui vérifie le contenu ET le type des variables
    ...

  3. #3
    Membre émérite
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Par défaut
    J'avoue ne pas avoir penser a la caste de ma variable.
    Ducoup, === qui tient compte de la caste me resoud mon pb.
    J'etais loin de penser a ca.
    Merci

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

Discussions similaires

  1. exécuter une fonction si toutes les conditions sont validées
    Par dajij dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 10/10/2011, 16h07
  2. arreter une procédure quand une condition est validé
    Par levasseur62 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 04/04/2011, 18h37
  3. [MySQL] Condition de validation
    Par Djydan dans le forum PHP & Base de données
    Réponses: 19
    Dernier message: 15/02/2011, 09h20
  4. Condition non validée
    Par xxkirastarothxx dans le forum Langage
    Réponses: 2
    Dernier message: 17/07/2008, 17h07
  5. condition de validation
    Par sylvie69 dans le forum Access
    Réponses: 3
    Dernier message: 30/01/2006, 11h20

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