Salut à tous,

J'utilise CodeIgniter pour un premier projet et après plusieurs tests en local ou tout fonctionnait j'ai voulu mettre en ligne sur un serveur de test pour voir si ça fonctionnait correctement.

Sauf que premier problème, la fonction "redirect" ne fonctionne pas et après plusieurs recherches je ne trouve pas ce qui cloche.

Je charge bien mon helper URL, j'ai normalement pas de code HTML interprété avant le redirect.
Le redirect fonctionne bien par contre avec un lien externe du genre http://www.lien.fr

Dans ma config je défini mon URL de base :

$config['base_url'] = "http://mon-url.net";

Ensuite dans mon contrôleur voici ce que je fais :

if($this->utilisateur_model->check_password(array('password' => $this->input->post('mot_de_passe'), 'hash' => $result[0]->mot_de_passe)))
{
    $session_data = array(
        'utilisateur' => $result[0]->utilisateur,
        'mail' => $result[0]->mail,
        'role' => $result[0]->role,
        'status' => $result[0]->status);

    $this->session->set_userdata('logged_in', $session_data);

    $this->session->set_flashdata('success', 'Vous êtes connecté');
    redirect('/admin/dashboard');
}

Si quelqu'un a une idée, je suis preneur, merci :)

8 réponses


tu as pas deja un rendu qui traine avant ? genre un debug, une alerte de session etc... si c'est le cas, tu ne peux pas rediriger si tu as déjà une sortie texte

sinon ca a l'air bon... tu rentre bien dans ton check ?

Merci pour ta réponse.

J'ai bien vérifier normalement rien ne traîne avant le redirect. Et tout fonctionne bien, ma session se met à jour juste avant le redirect et au moment de cette redirection plus rien, je retourne sur la même page...

redirect n'utilise pas un helper ?

Comment ça ?

La fonction redirect fait partie du helper 'url'. Je précise aussi que ma redirection fonctionne très bien en local.

Autre chose que j'ai remarqué, ma session est remplie avant la redirection mais par contre quand je reviens sur la page login j'ai rien en session, je trouve ça bizarre...

Avec Firebug je peux aussi voir que quand je valide j'ai dans l'ordre POST['login'] avec un statut 303 see other, puis GET['dashboard'] en 307 Temporary Redirect et enfin un GET['login'] en 200 OK. De ce côté la aussi ça me paraît bizarre...

et dans admin/dashboard, t'as pas un check de session ? is oui, c'est normal, t'as une double redirection alors... c'est ta session le pb...

J'ai ça dans admin/dashboard

if(isset($this->session->userdata['logged_in'])) {
    $content = $this->load->view('admin/dashboard/index', array(), TRUE);
    $this->load->view('admin/layout/layout', array('content' => $content, 'css_files' => array('app.css'), 'js_files' => array('app.js')));
} else {
     redirect('/admin/login');
}

EDIT : Quand je retire ma condition dans dashboard la redirection fonctionne effectivement. Mais du coup dans le cas où quelqu'un essaye d'accéder à dashboard sans être connecté, je vérifie comment ?

Et d'ailleurs pourquoi ça marchait en local comme ça et plus en ligne ?

Merci pour ton aide en tout cas ;)

c'est ce que je pensais... tu dois pas valider ta condition, donc tu as un soucis de session sur ton serveur. regarde les conf php et Code igniter, read the doc ;)

Bizarre pourtant ma session est bien mise à jour avant la redirection et après elle est vide.
Je vais me pencher la dessus alors, merci de ton aide ;)