Php 用户搜索后Codeigniter清除会话
我正在使用一个搜索功能,它在codeigniter中对页面进行分页。因此,我将搜索词保存在会话中,这样当您切换页面时,该词仍然可用。我有一个轻微的问题,虽然,它保存你输入的一切 我知道我需要用这个清除会话Php 用户搜索后Codeigniter清除会话,php,codeigniter,pagination,session-variables,Php,Codeigniter,Pagination,Session Variables,我正在使用一个搜索功能,它在codeigniter中对页面进行分页。因此,我将搜索词保存在会话中,这样当您切换页面时,该词仍然可用。我有一个轻微的问题,虽然,它保存你输入的一切 我知道我需要用这个清除会话 $this->session->unset_userdata('searchChal'); 但我不知道该把它放在哪里。我尝试将其放置在函数的开始和结束处,但它清除会话的速度太快,当单击下一页时,会话不再存在 当用户输入另一个值时,是否有任何方法可以清除会话?还是我错过了什么 这是
$this->session->unset_userdata('searchChal');
但我不知道该把它放在哪里。我尝试将其放置在函数的开始和结束处,但它清除会话的速度太快,当单击下一页时,会话不再存在
当用户输入另一个值时,是否有任何方法可以清除会话?还是我错过了什么
这是我的功能
public function searchChallenges(){
//This function allows you to search through all the challenges
$config["base_url"] = base_url()."index.php/story/searchChallenges";
$config["total_rows"] = $this->data_model->searchChal_count();
$config["per_page"] = 1;
$config["uri_segment"] = 3;
$choice = $config["total_rows"] / $config["per_page"];
$config["num_links"] = round($choice);
$this->pagination->initialize($config);
$page = ($this->uri->segment(3)) ? $this->uri->segment(3) : 0;
$searchTerm = $this->input->post("searchC", TRUE);
if($searchTerm) {
$searchChal= $this->input->post("searchC", TRUE);
$this->session->set_userdata('searchChal', $searchChal);
}elseif($this->session->userdata('searchChal')){
$this->search = $this->session->userdata('searchChal');
}else{
$searchTerm ="";
}
if (empty($this->user)) {
$this->load->view('header_view', array(
'cSearch' => $this->session->userdata('searchChal'),
));
$story = $this->story_model->searchChal($config['per_page'], $page);
if (! isset($story[0]->challenge_id)){
$this->load->view('noSearchChal_view');
}else{
$this->load->view('challenge_view', array(
'query' => $this->story_model->searchChal($config['per_page'], $page),
'links' => $this->pagination->create_links(),
'searchTerm' => $this->session->userdata('searchChal'),
));
}
$this->load->view('footer_view');
}else{
$this->load->view('header_view',array(
'user' => $this->users_model->getUser($this->user->user_id),
'cSearch' => $this->input->post("searchC"),
));
$story = $this->story_model->searchChal($config['per_page'], $page);
if (! isset($story[0]->challenge_id)){
$this->load->view('noSearchChal_view');
}else{
$this->load->view('challenge_view', array(
'query' => $this->story_model->searchChal($config['per_page'], $page),
'links' => $this->pagination->create_links(),
'admin' => $this->admin_model->adminSearchChal(),
'searchTerm' => $searchTerm,
));
}
$this->load->view('footer_view');
}
}
我将非常感谢您的帮助 将此放在页脚视图之后:-
$this->session->unset_userdata('searchChal');
您应该通过url传递搜索词,这样用户就可以同时打开多个搜索,并且结果页面可以书签和共享。为什么我希望他们打开多个搜索?我只希望他们一次只能搜索一件东西。另外,这不是我的问题,我的问题是清除会话。这是一个内部搜索,而不是一个我想被书签或能够搜索的搜索。如果你是一个注册用户,并且你想对网站的一小部分进行更详细的搜索,那么这将是一个更大的挑战。这是一个很好的功能。正如我所说的,由于分页,我只在清除设置的会话时遇到问题,其余的搜索工作正常。