我正在使用CodeIgniter
处理登录和搜索功能。
我到底在做什么?
当用户在搜索表单中搜索某些内容并提交该表单时,我会检查用户是否已登录,然后将直接显示结果&如果用户未登录,则会将用户重定向到登录页面,并将搜索数据保存在session
search_session_data
。
我有一个控制器,可以重定向用户的会话。如果用户直接进入登录页面,则登录后用户将被重定向到仪表板。但如果用户来自搜索页面,则用户在登录后会被重定向到搜索结果页面。
我已经在代码中提到了注释中的问题。
这是控制器:
public function get_the_search_result() {
$search_session_data = $this->session->userdata('search_session_data');
$this->load->model ('my_model');
$result_data = $this->my_model->find_data_regarding_search_criteria($search_session_data);
$this->load->view ('app/app_statch_result',['result_data' => $result_data,]);
}
public function login_function() {
//necessary login code
if ($this->session->userdata('search_session_data')) {
//Here I want the if `search_session_data` available in session then
// user goest to `get_the_search_result` and view the
//'app/app_statch_result` but it is not working.
$this->get_the_search_result();
} else {
return redirect('dashboard');
}
}
那么如何将用户重定向到
app_statch_result
login_function
功能?
任何有关改进的建议均适用。谢谢
答案 0 :(得分:0)
如果我是你,我会做以下事情:
样本库
class User_controll{
private $CI;
public function __construct() {
$this->CI = &get_instance();
}
public function check_user_data($username, $password) {
$tmpId;
// To increase security you can encrypt password
$user = $this->CI->db->from('users')->where(array('username' => $username, 'password' => $password))->get()->result();
if(count($user) == 1){
$this->CI->session->set_userdata('loggedIn', 1);
redirect('user_page');
}
}
protected function logout() {
$this->CI->session->set_userdata('loggedIn', 0);
}
public function isLoggedIn() {
return $this->CI->session->userdata('loggedIn') == 1;
}
}
样本控制器
class User_page extends CI_Controller{
public function __construct() {
parent::__construct();
$this->load->library('User_controll');
}
public function index() {
if(!$this->user_controll->isLoggedIn()){
redirect('user_page/loginForm');
}
else {
// do whatever you want
}
}
}