Codeigniter:php在刷新后第一次没有工作

时间:2014-08-29 09:09:29

标签: php codeigniter

我在codeigniter中使用一个简单的函数,在成功登录后重定向我的页面。

当页面加载时,我的内容被加载,但不是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链接。

更新
我尝试了no-cache标题并将它们放在不同的位置(甚至在主索引.php中) 其次,我不使用$template var,所以我得到了一个错误。

2 个答案:

答案 0 :(得分:0)

我认为你是浏览器缓存的受害者。尝试在刷新时设置无缓存标头:

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

答案 1 :(得分:0)

以下示例我希望对您有所帮助。

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

$ this-&gt;如果在数据数组中登录后传递一些细节,则使用数据。因此,您可以在构建模板之前传递这些值。 等,

$this->data['id']=$this->session->userdata('id',$id);