Welcome Guest, Not a member yet? Register   Sign In
[resolved] Redirect failed ! Help me
#1

[eluser]Mistraldor[/eluser]
Hello everybody,

I wrote a controller which call redirect(). But it doesn't work. I get in Firefox the message :"La page n'est pas redirigée correctement".
Yep, I'm French =). It means "page can't be redirected well".

Could you help me please ?

Here is pieces of my code :
Code:
[b]CONTROLLER[/b]


class Signup extends CI_Controller {

    public function index()
    {
        if($this->session->userdata('login') || $this->session->userdata('logged')) {
            redirect('signup/membres');
        }
        $this->form_validation->set_rules('pseudo','Pseudo','trim|required|xss_clean|callback_check_pseudo');
        $this->form_validation->set_rules('email','Email','trim|required|xss_clean|valid_email|callback_check_email');
        $this->form_validation->set_rules('pass','Mot de passe','trim|required|xss_clean','min_length[5]');
        
        if ($this->form_validation->run()) {
            $data = array(
            'pseudo'=>$this->input->post('pseudo'),
            'mail'=>$this->input->post('email'),
            'pass'=>sha1($this->input->post('pass'))
            );
            
            $this->signup_model->signup($data);

            $data['success'] = 'Inscription réussie';
            $data['titre'] = 'Inscription';
            $this->load->view('signup', $data);
        
        }
        else {
            $data['titre'] = 'Inscription';
            $this->load->view('signup', $data);
        }
    }
    
    function login() {
        if($this->session->userdata('login') || $this->session->userdata('logged')) {
            redirect('/signup/membres');
        }
        $this->form_validation->set_rules('pseudo', 'Pseudo', 'trim|required|xss_clean');
        $this->form_validation->set_rules('pass','Password','trim|required|xss_clean|min_length[5]');
        
        $data['titre'] = 'Connexion';
        $this->load->view('login',$data);
        if($this->signup_model->checkid($this->input->post('pseudo'), $this->input->post('pass'))) {
            $data = array('login'=>$this->input->post('pseudo'), 'logged'=>true);
            $this->session->set_userdata($data);
            redirect('signup/membres');
        }
        else {
            $data['error'] = 'Mauvais identifiant';
        }
        
        
    }
    
    function logout() {
        $this->session->unset_userdata('login');
        $this->session->unset_userdata('logged');
        $this->session->sess_destroy();
        redirect(site_url());
    }
    
    function membres() {
        if(!$this->session->userdata('login') || $this->session->userdata('logged')) {
            redirect(site_url());
        }
        else {
            $data['titre'] = 'Zone réservée aux membres';
            $this->load->view('membres');
        }
    }
#2

[eluser]InsiteFX[/eluser]
You have several redirects which one generates the error?

Taking a guess I would say its this one:
Code:
// because this will not work
redirect(site_url());

redirect(site_url('home'));
home would be your controller.

InsiteFX
#3

[eluser]Mr. Pickle[/eluser]
I even guess passing no parameters will automatically redirect to default controller.
#4

[eluser]InsiteFX[/eluser]
Maybe use base_url() instead of site_url()

@Mr. Pickle, yes you are correct it should go to the what is set in the config file and go to the default controller.

I always use base_url().controller/method

InsiteFX
#5

[eluser]Mistraldor[/eluser]
I try to use redirect() and redirect(base_url()) and there is no change. In fact no one redirect works.

Is It possible there is a conflict between codeIgniter and wamp ?
#6

[eluser]InsiteFX[/eluser]
Did you load the url_helper? This needs to be loaded for all url things to work!

You can autoload it in application/config/autoload.php
Code:
$autoload['helper'] = array('url');

InsiteFX
#7

[eluser]Mistraldor[/eluser]
Yes, I did. I don't understand what is wrong.

Edit: I found, youppiii ! It's because a redirection loop. At the beggining, my first redirection drove to 'signup/membres' and membres drove to 'signup/index' because I forgot a '!' in condition :
Code:
if(!$this->session->userdata('login') || [color=red]![/color]$this->session->userdata('logged'))

That's dummy. Thanks




Theme © iAndrew 2016 - Forum software by © MyBB