Bonjour,
Je suis entrain de réaliser un site avec Codeigniter. Jusqu'ici tout se passait bien mais j'ai un problème.
Mon problème est le suivant : je créer un site comportant 3 parties (public, privé, administration). Les 3 parties ont leurs propres URLs (public : mondomaine.fr ; privé : user.mondomaine.fr ; administration : admin.mondomaine.fr). Le controleur qui traite la connexion contient ceci :
<?php
class Login extends CI_Controller
{
public function __construct()
{
parent::__construct();
$this->load->library('session');
$this->load->model('user_model');
}
public function index()
{
$this->load->library('form_validation');
$this->form_validation->set_rules('callsign', 'Indicatif', 'trim|required');
$this->form_validation->set_rules('password', 'Mot de passe', 'trim|required|callback_check_database');
if($this->form_validation->run() == FALSE)
{
redirect(PUBLIC_URL, 'refresh');
}else{
redirect(PILOT_URL, 'refresh');
}
}
function check_database($password)
{
$callsign = $this->input->post('callsign');
$result = $this->user_model->login($callsign, $password);
if($result)
{
$sess_array = array();
foreach($result as $row)
{
$sess_array = array('id' => $row->id,
'callsign' => $row->callsign,
'status' => 'logged_in'
);
$this->session->set_userdata($sess_array);
}
return true;
}else{
$this->form_validation->set_message('check_database', 'Invalid callsign or password');
return false;
}
}
}
?>
Et tous mes controleurs ont une condition de type :
<?php
if($this->session->userdata('status') == 'logged_in')
{
// Le controleur fait son boulot
}else{
// Il redirige l'utilisateur vers la partie public ou privée en fonction d'où l'utilisateur veut forcer l'accès
}
?>
Le problème c'est que j'ai une boucle de redirection qui est me bloque mais je ne voit pas ce qui ne va pas.
Autre chose : quand je debug la variable superglobale des sessions j'ai ceci :
Array ( [__ci_last_regenerate] => 1433496391 )
Merci d'avance :)
Pourquoi tu traites ton résultat (dans check_database) avec un foreach ?
Normalement tu ne devrais pas avoir un tableau multidimensionnel.
Enfaite le fait de mettre unboucle "for" à la place de la boucle "foreach" ne change rien au problème...
C'est normal, tu ne dois pas faire de boucle du tout...
Que te retourne la fonction login de ton modèle User ?