2012-01-20 25 views
18

Estoy tratando de dirigir al usuario a mi página principal cuando el usuario está autorizado. Estoy haciendo la comprobación de usuario en mi regulador login_check y añadir $this->load->view('main'); La página puede ser carga, pero la dirección del sitio en la página principal todavía muestrancodeigniter redirigir a diferente controlador

http://myprojectname/login_check

pero quiero que se muestre

http://myprojectname/main.

¿Tengo que crear un nuevo controlador "principal" y cargar la vista? Me parece redundante. Aquí está mi código.

parte de mi login_check.php

private function _user_check() 
{ 
    $this->load->model('user_query'); //load my model 
    $result=$this->user_query->query($this->input->post('username'),$this->input->post('password'))    

    if($result) //the user is in DB 
    { 
     $data['view']='main'; 
     $this->load->view('include/template', $data); 
     //the address bar shows http://myproject/login_check in main page  

    }else{ //the user is not in DB 

     $data['view']='login'; 
     $this->load->view('include/template', $data); 
    } 

} 

Respuesta

53

En primer lugar, que está haciendo un trabajo muy pobre de comprobar si el usuario está autenticado de paso nombre de usuario/pass (a modelo no es la mejor, debe procesar/cheque antes de enviar a modelo).

Puede hacer redirecciones fácilmente mediante la inclusión de la 'URL' ayudante y simplemente usar:

redirect('/controller/method'); 

o en un ejemplo del mundo real:

redirect('/main'); 

Reference Link

+1

Cuando dijo "proceso/check" antes de enviar a modelar, su form_validation media? Si es así, ya lo hice en mi otra parte del código. ¿Debo hacer mysql_real_escape_string? Pensé que Codeigniter ya lo aplicaba ya que estoy usando $ this-> input-> post. Thans. – FlyingCat

+1

No, está bien, CI se encarga de todo eso si usa ** Consultas activas **; sin embargo, si escribe la consulta SQL usted mismo necesita usar '$ this-> db-> escape()' para escapar de su diga 'nombre de usuario' o 'contraseña' por las dudas (nunca está de más estar preparado) – Jakub

+0

ok. Gracias por la ayuda. : D – FlyingCat

0

hay otra manera pero similar a redirigir(), si su controlador es controlador de reposo

restserver

puede utilizar el cliente resto en otro controlador para llamar a métodos en el controlador del servidor

restclient

Cuestiones relacionadas