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 :

Variable de session qui fait planter l'application


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Expert technique
    Inscrit en
    Septembre 2003
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert technique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 328
    Points : 159
    Points
    159
    Par défaut Variable de session qui fait planter l'application
    Bonjour,

    J'essai de setter 2 variables de sessions lors du login d'un utilisateur sur mon application :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if ($value->login == $this->login && $value->password == $this->password) {
        $_SESSION['auth'] = $this->login . $value->role;
        $_SESSION['role'] = $value->role;
        cTools::log('Login OK: ' . $this->login . "(" . $value->role . ")",'INFO');
        return true;
    }
    La variable de session role n'est pas utilisé dans la procédure de login.

    le problème est que quand je lance le login, si j'ai les 2 variables $_SESSION, impossible de me logguer je reviens sur la fenêtre de login.
    Si je mets la variable role en commentaire, ça marche.

    J'ai donc tester de mettre une variable avec un nom exotic. J'ai créé une variable de session TOTOTATA. Et idem ça fait planter le login.
    J'en conclu que ça plante s'il y a plus d'une variable de session et je ne comprends pas pourquoi.

    Version de php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PHP 5.3.3 (cli) (built: Dec 11 2013 03:29:57)
    Une idée ?

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    avant d'exécuter la moulinette de login, fait un print_r($_SESSION); et poste ce que tu as en session.
    Quand tu dis "planter le login" ça veut dire quoi ? Erreur fatale, redirection...

  3. #3
    Membre habitué
    Profil pro
    Expert technique
    Inscrit en
    Septembre 2003
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert technique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 328
    Points : 159
    Points
    159
    Par défaut
    Alors ça c'est ma fonction de check:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public function checkUser() {
        $xml = simplexml_load_file($this->file);
        foreach ($xml as $key=>$value) {
            if ($value->login == $this->login && $value->password == $this->password) {
                $_SESSION['auth'] = $this->login;
                $_SESSION['role'] = $value->role;
                cTools::log('Login OK: ' . $this->login . "(" . $value->role . ")",'INFO');
                return true;
            }
        }
        cTools::log('Login KO: ' . $this->login,'INFO');
        return false;
    }
    Le formulaire envoi vers login.php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $chkLogin = new cLogin(cTools::protect($_POST['login']),sha1(cTools::protect($_POST['pwd'])));
    if ($chkLogin->checkUser()) header('Location: tasks.php');
    else header('Location: index.php');
    Si c'est ok, il envoi vers tasks.php. Mais comme ce n'est pas ok et qu'il renvoi vers index.php, j'ai ajouté le print_r (displayArray car j'ajouter les pre) dans index.php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    cTools::displayArray($_SESSION);
    /* vérifie si le user est connecté */
    if(!isset($_SESSION['auth'])) {
        $template->assign('loginForm','form');
    } else {
        $template->assign('loginName',$_SESSION['auth']);
        $template->assign('loginRole',$_SESSION['role']);
        $template->assign('loginPage','tasks.php');
        header("Location: tasks.php");
    }
    Même retour lors de l'accès au formulaire et après soumission du formulaire:
    Array(
        [tpl] => crl
    )
    Si je comment la ligne $_SESSION['role'], ça donne ça:
    Array(
        [tpl] => crl
        [auth] => sadmin
    )
    Je n'arrive pas à comprendre en quoi le fait d'ajouter une variable d'environnement fait planter le login.
    Le symptôme est que quand je valide le formulaire, je me retrouve de nouveau sur le formulaire de login sans aucune exception ou message à l'affichage et rien dans les logs apache non plus.

  4. #4
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Est ce que cette ligne te génère une trace dans tes logs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cTools::log('Login OK: ' . $this->login . "(" . $value->role . ")",'INFO');
    Débogue autour de $value->login et $value->password, histoire de voir comment les valeurs sont récupérées du fichier xml et assure toi que $this->login et $this->password soient bien définis

  5. #5
    Membre habitué
    Profil pro
    Expert technique
    Inscrit en
    Septembre 2003
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert technique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 328
    Points : 159
    Points
    159
    Par défaut
    Oui la partie log est ok. Les valeurs sont bonnes. Je ne pige pas

  6. #6
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Bon moi aussi je sèche : à tout hasard peux-tu essayer avec ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION['role'] = (string)$value->role;

  7. #7
    Membre habitué
    Profil pro
    Expert technique
    Inscrit en
    Septembre 2003
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert technique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 328
    Points : 159
    Points
    159
    Par défaut
    mouarfff. ça marche ?!! Pourtant c'est bien du texte que je récupère dans le xml ... bizarre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Array
    (
        [tpl] => crl
        [auth] => sadmin
        [role] => SA
    )
    Merci en tout cas !

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

Discussions similaires

  1. Supprimer une crontab qui fait planter le server
    Par osmoze dans le forum Administration système
    Réponses: 5
    Dernier message: 31/03/2006, 16h42
  2. Réponses: 4
    Dernier message: 13/03/2006, 12h29
  3. 56k qui fait planter le PC
    Par Spack dans le forum Périphériques
    Réponses: 4
    Dernier message: 03/10/2005, 20h35
  4. probleme de requette qui fait planter powergres
    Par fehmitn dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 15/09/2004, 19h48
  5. Réponses: 12
    Dernier message: 16/03/2004, 15h21

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