Pregunta

Tengo el siguiente código. Comprueba si el usuario está conectado o no. Cuando la variable $ is_logged_in no está ajustado o es falso, me carga una vista de mensajes. Por desgracia, al mismo tiempo, el sistema carga la vista de contenido restringido. Por lo que utiliza la función die (), y ahora sólo muestra una página en blanco.

¿Qué puedo hacer yo solamente para cargar la vista de mensajes cuando el usuario no está conectado? Gracias.

if(!isset($is_logged_in) OR $is_logged_in == FALSE)
{
     $data['main_content'] = 'not_logged_in';

     $data['data'] = '';

     $this->load->view('includes/template',$data);

     die();
}
¿Fue útil?

Solución 2

De todos modos. He utilizado una redirección a la página de inicio de sesión, y una variable flashdata

if(!isset($is_logged_in) OR $is_logged_in == FALSE)
   {
       $this->session->set_flashdata('error_msg','You must be logged in to access restricted area');
       redirect('login/');
   }

Gracias

Otros consejos

En realidad, he encontrado una respuesta a mantener la URL y no redirige:

$data['main_content'] = 'unauthorized_access';
$this->load->view('includes/template', $data);

// Force the CI engine to render the content generated until now    
$this->CI =& get_instance(); 
$this->CI->output->_display();

die();

He estado jugando con esto por un tiempo. Si está utilizando die o exit después de tratar de cargar un punto de vista, muestra una página en blanco CI.

La solución sería utilizar return, que detiene la ejecución de la función actual, y no ejecuta nada después de que a continuación.

Un simple ejemplo:

public function validate(){
 //validation code

 if(!$valid){
  $this->load->view('error');
  return;
 }

 //This code won't run
}

CI probablemente está usando búfer de salida (ver http: //www.php .NET / manual / es / ref.outcontrol.php ). Si desea cargar una vista y mata a la secuencia de comandos, tendrá que vaciar el búfer. Esto normalmente se realiza al final de la secuencia de comandos, pero die () ing lo para de llegar allí.

if(!isset($is_logged_in) OR $is_logged_in == FALSE)
{
    $data['main_content'] = 'not_logged_in';
    $data['data'] = '';
    $this->load->view('includes/template',$data);

    ob_flush();
    die();
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top