У меня проблема при создании session
логин в систему, выполненный без ошибок, и я могу распечатать данные session
но моя проблема
Во-первых, когда я перехожу со страницы на страницу, никаких данных session
не обнаружено, и я могу открыть любую функцию, написав URL-адрес моей защиты, не переведя меня на страницу входа
Во-вторых: я хочу применить весь сеанс во всем контроллере, вы можете мне помочь
Это мой код: - контроллер
class Users extends CI_Controller
{
public function __construct()
{
parent::__construct();
$this->load->library('session');
// print_r($this->session->userdata);
}
public function Login()
{
if($this->input->post("login"))
{
$this->load->library('form_validation');
$this->form_validation->set_rules("username","UserName",'required|min_length[3]|max_length[30]|alpha');
$this->form_validation->set_rules("password","password",'required|min_length[3]|max_length[30]');
if ($this->form_validation->run())
{
$username=$this->input->post("username");
$password=$this->input->post("password");
$encpassword=md5($password);
$this->load->model("DatabaseModel");
if($info=$this->DatabaseModel->mainlogin($username,$encpassword))
{
if(is_object($info)){
$session_data=array(
'username' => $info->username,
'id' =>$info->id,
'email' => $info->email,
'image' => $info->image
);
$this->session->set_userdata($session_data);
}
$this->session->set_userdata($session_data);
redirect(site_url("Dashboard/index"));
}else{
$this->session->set_flashdata('error', 'Error With Login ');
redirect(site_url("Users/login"));
}
}else{
//error for validation
}
}
$data['pagetitle']="IStore | Login";
$this->load->view("users/login",$data);
//$this->load->view("users/login");
}
public function logout()
{
$this->session->unset_userdata('username');
$this->session->unset_userdata('id');
$this->session->unset_userdata('email');
$this->session->unset_userdata('image');
redirect(site_url("Users/login"));
}
}
Это моя база данных
public function mainlogin($username,$password)
{
$this->db->select('*');
$this->db->from("users");
$this->db->where('username',$username);
$this->db->where('password',$password);
$sql=$this->db->get();
return $sql->row();
}
вы должны установить свою библиотеку сеансов в файле autoload.php из папки config
/* | ------------------------------------------------------------------- | Auto-load Libraries | ------------------------------------------------------------------- | These are the classes located in the system/libraries folder | or in your application/libraries folder. | | Prototype: | | $autoload['libraries'] = array('database', 'session', 'xmlrpc'); */ $autoload['libraries'] = array('session');
После заданного сеанса в autoload.php вы можете получить данные сеанса во всех contoller, а затем вы можете проверить свою сессию, что это уничтожается или нет, если ваш сеанс был уничтожен, чем вы можете перенаправить пользователя с этой страницы
Это ответ на то, как предотвратить доступ пользователей к страницам без входа
codeigniter проверяет сеанс пользователя в каждом контроллере
Я надеюсь, что это поможет вам