Bonsoir à tous,
Je rencontre depuis tout à l'heure un bug que je n'arrive pas à résoudre.
Je vous présente tout d'abord mon code et vous explique ensuite le problème :
<?php
class Connexion extends CI_Controller
{
public function index()
{
/* Je verifie l'existence de cette variable de session */
$member_id = $this->session->userdata('member-id');
echo $member_id; /* Ici rien ne s'affiche, dans tous les cas ... */
if ($member_id == FALSE) { /* Je rentre TOUT LE TEMPS dans ce if
echo 'toto';
$this->connect();
}
else {
echo 'Déjà connecté';
}
}
public function connect()
{
$this->form_validation->set_rules('pseudo', '"Nom d\'utilisateur"', 'trim|required|min_length[4]|max_length[30]|alpha_dash|encode_php_tags|xss_clean');
$this->form_validation->set_rules('pass', '"Mot de passe"', 'trim|required|min_length[4]|max_length[30]|alpha_dash|encode_php_tags|xss_clean');
if($this->form_validation->run())
{
$this->load->model('members_model', 'Members');
// On récupère le mot de passe associé au pseudo
$data = $this->Members->get_pass($this->input->post('pseudo'));
if ($data->password == hash('sha256', $this->input->post('pass'))) {
$this->session->set_userdata('member-id', $data->id);
$this->session->set_userdata('pseudo', $this->input->post('pseudo'));
echo $this->session->userdata('member-id');
$this->load->view('connexion-reussie');
}
else {
$var['erreur'] = 'Le pseudo et le mot de passe ne correspondent pas.';
$this->load->view('connexion', $var);
}
}
else
{
// Le formulaire est invalide ou vide
$this->load->view('connexion');
}
}
}
Lorsque j'arrive sur ma page pour la premiere fois, tout se passe normalement, je rempli le formulaire se trouvant dans ma vue, je me connecte donc, et j'affiche alors ma variable de session "member-id", qui apparait correctement à l'écran.
Si j'ai bien compris le manuel de CI, j'ai alors créé la session correspondant au membre. Mais peut-etre (et je pense) que je me trompe.
Si je ré-ouvre la page (sans appuyer sur F5, en l'ouvrant de nouveau), c'est encore une fois le formulaire de connexion qui apparait. Ce que je croyais avoir fait dans dans ma methode index() c'est de vérifier si ma variable de session "member-id" existait et si elle n'existait (donc dans le cas où elle vallait FALSE) j'affichais le formulaire, sinon, j'affichais (pour du débug) "Déjà connecté".
Mon soucis est que dans tout les cas, le formulaire est réaffiché et ce n'est évidemment pas ce que je veux ...
Pourriez-vous, s'il-vous-plait m'éclairer sur ce problème ?
D'avance merci de votre aide !