Bonjour,
Je rencontre des difficultés avec les sessions codeIgniter 2.0.2. Je n'arrive pas à initialiser les sessions. Je charge bien les données dans la base de données mais impossible de les mettres dans la variable de sessions de codeIgniter.

Le code du contrôleur ci-dessous :

<?php
// Récupération des informations concernant l'utilisateur (tableau $data). Retourne FALSE si aucune donnée trouvée
$connexion = $this->user->connexion($data);
// On vérifie que le tableau retourné comporte bien une colonne
if (count($connexion) == 1) :
    // On boucle sur le tableau
    foreach ($connexion[0] as $a => $v) :
        // On stock les données extraites dans un talbeau avec pour argument $a
        $data$a] = $v;
    endforeach;
    // On vérifie que le mail à bien été confirmé. Si ce n'est pas le cas on affiche un message d'erreur
    if ($data'ConfirmationMail'] == 0) :
        // On initialise le message d'erreur
        $this->data'erreur'] = "Le compte doit être activé pour pouvoir vous connecter.";
    // Sinon
    else :
        // On initialise les sessions (endroit du bugà
        if ($this->session->set_userdata($data)) :
            // Si On a réussi à initialiser les les sessions on redirige vers une autre page
            redirect('membres/compte', 'redirect');
        // Sinon
        else :
            // On initialise un message d'erreur
            $this->data'erreur'] = "La session n'a pas pu être initialisée.";
        endif;
    endif;
else :
    // Si il n'y a aucune données extraite de la base alors on initialise un message d'erreur.
    $this->data'erreur'] = "Le couple pseudo / mot de passe est érroné.";
endif;
?>

Je vous precise que les sessions sont auto-loadées dans le fichier ./application/config/autoload.php.

Merci d'avance.

5 réponses


Tit-LoW
Auteur
Réponse acceptée

Le probleme est resolu.
En faite, il ne falais pas placer la fonction dinitialisation des sessions dans une condition car la fonction ne retourne pas de valeur (true ou false). Donc le if retournait par defaut false.

Salut moi aussi je suis en plin codeigniter regarde se tutoriels http://simpledev.fr/tutoriels/tuto/codeigniter-de-zero-les-sessions/118

Tit-LoW
Auteur

Je l'ai déjà regardé au moins 3 fois. J'ai relus la documentation une bonne douzaine de fois. Mon code parait totalement valide. Mais pourtant je n'arrive pas à faire marcher les sessions. Le problème se trouve exactement à la ligne 26. Mais je ne vois pas d'erreur.

Je suis désolé mais ça fais 3 jours que je bug sur cette ligne...

Tu as initializé les sessions dans le fichier config/autoload.php ? Ou tout simplement fait un $this->load->library('session'); avant l'appel de la methode set_userdata ?
Normalement tu as une ligne

$autoload'libraries'] = array();

, il faut y ajouter la librarie de session.

$autoload'libraries'] = array('session');

Codeigniter est un framework très léger, mais qui pour rester léger ne charge que le minimum de fichiers. La library de Session n'est pas chargée de base, juste les librairies du Core, comme le Controller, le Model, le Load, etc... le sont.

Tit-LoW
Auteur

Comme je l'ai dis dans le premier post : "Je vous precise que les sessions sont auto-loadées dans le fichier ./application/config/autoload.php."

Voici la variable :

$autoload'libraries'] = array('database', 'form_validation', 'session');

Et biensur dans le fichier de configuration :

$config'encryption_key'] = 'MaCleDeHashage';

Il est écrit dans la documentation qu'il faut une clé de hashage ou d'encryptage pour les sessions. (Ce n'est pas la vrai clé précisée si dessus)