Я создаю форму входа с многоуровневой функцией, код для многоуровневого кода работает, но у меня проблема с сеансом, когда я вхожу в свою учетную запись как администратор и перенаправляю на панель администратора, но я все еще могу использовать заднюю страницу, которая напрямую чтобы снова зайти на страницу входа, так что я пропустил?
мой контроллер входа:
<?php
defined('BASEPATH') or exit('No direct script access allowed');
class Login extends CI_Controller
{
function __construct()
{
parent::__construct();
$this->load->model('login_model');
$this->load->library('session');
$this->load->helper('url');
// $this->load->library('form_validation');
}
function index()
{
$datatitle['title'] = 'Login LPPM UTY';
$this->load->view('auth/tamplate/auth_header', $datatitle);
$this->load->view('auth/login_v');
$this->load->view('auth/tamplate/auth_footer');
}
function auth()
{
$username = htmlspecialchars($this->input->post('username', TRUE), ENT_QUOTES);
$password = htmlspecialchars($this->input->post('password', TRUE), ENT_QUOTES);
$cek_admin = $this->login_model->auth_admin($username,$password);
if ($cek_admin->num_rows() > 0) { //jika login sebagai admin
$data = $cek_admin->row_array();
$this->session->set_userdata('masuk', TRUE);
if ($data['level'] == '1')
{ //Akses admin
$this->session->set_userdata('akses', '1');
$this->session->set_userdata('user', $data['username']);
$this->session->set_userdata('name', $data['name']);
redirect('admin');
} else { // jika username dan password tidak ditemukan atau salah
$url = base_url();
echo $this->session->set_flashdata('notif', '<div class="alert
alert-danger" role="alert">Username Atau Password Salah
</div>');
redirect($url);
}
} else { //jika login sebagai dosen
$cek_dosen = $this->login_model->auth_dosen($username, $password);
if ($cek_dosen->num_rows() > 0) {
$data = $cek_dosen->row_array();
$this->session->set_userdata('masuk', TRUE);
($data['level'] == '2');
$this->session->set_userdata('akses', '2');
$this->session->set_userdata('user', $data['username']);
$this->session->set_userdata('name', $data['name']);
redirect('dosen');
} else { // jika username dan password tidak ditemukan atau salah
$url = base_url();
echo $this->session->set_flashdata('notif', '<div class="alert
alert-danger" role="alert">Username Atau Password Salah
</div>');
redirect($url);
}
}
}
function logout(){
$this->session->sess_destroy();
redirect('login');
}
}
Модель login_model:
<?php
defined('BASEPATH') or exit('No direct script access allowed');
class Login_model extends CI_Model
{
function auth_admin($username, $password)
{
$query = $this->db->query("SELECT * FROM admin_login WHERE username='$username' AND password=md5('$password') LIMIT 1");
return $query;
}
//cek username dan password pengajar
function auth_dosen($username, $password)
{
$query = $this->db->query("SELECT * FROM dosen_login WHERE username='$username' AND password=md5('$password') LIMIT 1");
return $query;
}
}
Контроллер администратора:
<?php
class Admin extends CI_Controller
{
function __construct()
{
parent::__construct();
$this->load->library('session');
$this->load->model('m_admin');
if ($this->session->userdata('masuk') != TRUE) {
$this->load->helper('url');
redirect('login');
}
}
function index()
{
if($this->session->userdata('akses') =='1'){
$datatitle['title'] = 'Beranda Admin';
$this->load->view("dashboard/admin/header_admin_v", $datatitle);
$this->load->view("dashboard/admin/home_admin_v");
$this->load->view("dashboard/admin/footer_admin_v");
} else {
echo "Access Denied";
}
}
public function show_dosen($nidn){
if($this->session->userdata('akses') == '1'){
$nidn = array('nidn' => $nidn);
$data['dosen'] = $this->m_admin->edit_tampil($nidn,'data_dosen')->result();
$info = $this->m_admin->edit_tampil($nidn,'data_dosen')->result();
$user = $this->m_admin->edit_tampil($nidn,'dosen_login')->result();
$dataa = array(
'info' => $info,
'user' => $user
);
$this->load->view('dosen/dosen_data',$dataa);
}
else{
echo '<script type="text/javascript">alert("Sesi habis! Login Lagi!")</script>';
$this->load->view('login');
}
}
}