我在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,所以我得到了一个错误。
答案 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);