2014-08-29 2 views
-3

Я использую простую функцию в codeigniter для перенаправления моей страницы после успешного входа в систему.Codeigniter: php не работает в первый раз после обновления

При загрузке страницы загружается контент, а не код между тегами php.

Это не проблема rewrite_short_tags, о которой я думаю, потому что, когда я нажимаю F5, все хорошо загружается.

Почему мне нужно обновить страницу с помощью F5, чтобы увидеть результаты?

Контроллер:

session_start(); 
class Login_form extends CI_Controller { 

function __construct() 
{ 
    parent::__construct(); 
    $this->load->model('user','',TRUE); 
} 

function index() 
{   
    //This method will have the credentials validation 
    $this->load->library('form_validation'); 

    $this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean'); 
    $this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean|callback_check_database'); 

    if($this->form_validation->run() == FALSE) 
    { 
     //Field validation failed.  User redirected to login page 
     //$this->load->view('login_view'); 
     echo validation_errors(); 
     include "application/views/forms/login.php"; 
    } 
    else 
    { 

     //Refresh index   
     redirect('index', 'refresh'); 
    }  
} 

function check_database($password) 
{ 
    //Field validation succeeded.  Validate against database 
    $username = $this->input->post('username'); 

    //query the database 
    $result = $this->user->login($username, $password); 

    if($result) 
    { 
     $sess_array = array(); 
     foreach($result as $row) 
     { 
     $sess_array = array(
      'id' => $row->id, 
      'username' => $row->username 
     ); 
     $this->session->set_userdata('logged_in', $sess_array); 
     } 
     return TRUE; 
    } 
    else 
    { 
     $this->form_validation->set_message('check_database', 'Invalid username or password'); 
     return false; 
    } 
} 

function logout() { 
    $this->session->unset_userdata('logged_in'); 
    session_destroy();  
    redirect('index', 'refresh'); 
} 
} 

Вид:

<h1>My cms</h1>  
<?php 
    if (!$this->session->userdata('logged_in')) { 
     echo form_open('login_form', array('id' => 'loginForm')); ?> 
     <div id="formLoginDiv">    
      <?php include "forms/login.php"; ?> 
     </div> 
     </form> 
<?php } else { ?>     
     <a href="<?php echo site_url('login_form/logout')?>">Logout</a> 
<?php } ?> 

Я бегу вид как: redirect('index', 'refresh');

Теперь он загружает все хорошо, когда при первом запуске этой точки зрения. После проверки, сделанной ajax и возвращенной true, я обновляю это представление. Но ссылка Logout не просматривается.

Update:
Я попытался no-cache заголовков и поместил их в разных местах (даже в главном index.php).
Второе, я не использую var $template var, поэтому я получаю сообщение об ошибке с этим.

+0

Я добавил соответствующий код и обновления на вопрос дается ОП в 2 «ответы» и проголосовали заново. – GitaarLAB

ответ

0

Я думаю, что вы являетесь жертвой кеша браузера. Попробуйте не устанавливать заголовки кеша при обновлении:

header('Cache-Control: no-cache'); 
header('Pragma: no-cache'); 
0

следующий пример, я хочу вам помочь.

$this->template->build('SET YOUR PATH',$this->data); 

$ this-> использование данных при передаче некоторых подробностей после входа в массив данных. Вы можете передать эти значения перед шаблоном сборки. как,

$this->data['id']=$this->session->userdata('id',$id); 
Смежные вопросы