[CodeIgniter] Redirect ne fonctionne pas

L’auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

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 :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
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 :)

Édité par Roipoussiere

+0 -0

J’ai édité le message afin d’utiliser la balise de code multiligne (qui s’utilise avec ```).

"Il faut commencer par du rêve. Et les choses deviennent réelles à un moment ou un autre." - Kenny Todd, directeur des opérations pour l’ISS.

+0 -0
Auteur du sujet

Merci d’avoir formaté mon premier message.

Alors en faite ce n’est pas ma redirection qui ne marche pas mais la session. Une fois mes données récupérées, ma session est bien mise à jour, ma redirection se fait bien et en arrivant sur la page suivante plus aucune session n’existe.

Voici le code de ma page "dashboard" sur laquelle va ma redirection

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
public function index()
{
    if($this->session->has_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 {
        $this->session->set_flashdata('error', 'Here');
        redirect('/admin/login');
    }
}

Ici je test ma session mais elle n’existe pas (alors qu’elle existe bien avant la redirection) et du coup je suis redirigé sur login (pour ça que je pensais que la redirection ne marchait pas).

J’ai bien ma librairie session qui est chargée.

Édité par Ariol

+0 -0

Salut !

Petit HS : pour avoir la coloration syntaxique, il faut ajouter php juste après les premiers ```, et, pour PHP, il faut que le code commence par <?php.

Pour ton problème, en regardant dans la doc, je vois que le chemin par défaut pour la sauvegarde des sessions est null (sess_save_path), tu l’as bien modifié ?

Auteur du sujet

Merci de ta réponse.

Alors j’ai essayé, dans mon sess_save_path j’ai indiqué "APPPATH . ’sessions/’;" J’ai créé un dossier "sessions" (d’ailleurs je ne sais pas vraiment ou mettre ces sessions…)

J’ai tenté de me connecter toujours aucun résultat par contre dans mon dossier "sessions" je retrouve 5 fichiers dont 4 sont vides et le dernier contient mes données sous cette forme :

1
logged_in|a:4:{s:11:"utilisateur";s:6:"Utilisateur";s:4:"mail";s:24:"utilisateur@mail.fr";s:4:"role";s:2:"80";s:6:"status";s:1:"1";}success|s:20:"Vous êtes connecté";__ci_vars|a:1:{s:7:"success";s:3:"new";}

Et je comprends toujours pas pourquoi ma session ne marche pas ^^

Par ailleurs je cherche à droite à gauche pour trouver et une réponse revient souvent, stocker les sessions en base de donnée. Ça apporte quoi de mieux ?

EDIT : Par ailleurs j’ai aussi essayé de stocker mes valeurs directement dans $_SESSION et elles ne persistent pas non plus sur la seconde page…

Édité par Ariol

+0 -0

Il me semble que tu dois charger la bibliothèque session avant de pouvoir l’utiliser.

Tu peux faire cela grâce à $this->load->library('session');, comme indiqué dans la doc.

Tu peux aussi la charger dans ton fichier application/config/autoload.php afin de ne plus avoir à le faire dans chacun de tes contrôleurs.

Ku Wenja warhata? U miha Wenja warha!

+0 -0
Auteur du sujet

Salut à tous,

Bon je reviens faire le point. Je n’ai pas trouvé de solution pour mon problème de session du coup je me suis trouvé un autre hébergeur gratuit pour essayer et … surprise ça marche !

Du coup je pense que ça vient de la configuration du serveur précédent mais je ne connais pas la cause exacte. Ce n’est pas grave c’est juste pour mes essais, pour la vrai mise en ligne je pense que ça fonctionnera sur un serveur OVH ou autre.

Merci à ceux qui ont pris du temps pour m’aider ;)

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte