Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Codeigniter中的登录会话问题_Php_Html_Codeigniter_Web_Codeigniter 3 - Fatal编程技术网

Php Codeigniter中的登录会话问题

Php Codeigniter中的登录会话问题,php,html,codeigniter,web,codeigniter-3,Php,Html,Codeigniter,Web,Codeigniter 3,我创建了具有多级功能的登录表单,多级代码正在运行,但我在会话中遇到了问题,当我以管理员身份登录到我的帐户并直接登录到管理员仪表板时,但我仍然可以使用返回页直接再次登录页面,所以我错过了什么 我的登录控制器: <?php defined('BASEPATH') or exit('No direct script access allowed'); class Login extends CI_Controller { function __construct() {

我创建了具有多级功能的登录表单,多级代码正在运行,但我在会话中遇到了问题,当我以管理员身份登录到我的帐户并直接登录到管理员仪表板时,但我仍然可以使用返回页直接再次登录页面,所以我错过了什么

我的登录控制器:

<?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');
      }
}
<?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');
        }         
    }
}

生成会话以了解管理员是否已登录--

检查会话是否在登录url(控制器)上生成--


在构造中检查会话

function __construct ()
    {
        parent ::__construct ();

        if ($this -> session -> userdata ( "akses" ) == 1) {
            redirect ( "admin/dashboard" , "refresh" );
        }
        if ($this -> session -> userdata ( "akses" ) == 2) {
            redirect ( "user/dashboard" , "refresh" );
        }
    }

您是否在问为什么在成功登录后使用“后退”按钮时会出现登录页面?你还期望发生什么?为什么?警告!不要使用md5进行密码哈希!偶数表示:“警告-由于此哈希算法的快速性,不建议使用此函数保护密码”。您应该使用PHP创建一个安全的散列。然后,您可以使用验证密码是否符合哈希。另外,为什么要对发布的数据使用
htmlspecialchars()
?我没有看到你在任何地方输出这些值?你也会受到攻击。阅读有关如何将参数安全绑定到查询的。特别是因为您目前根本没有从SQL注入中转义数据。@Magnus yes我在问为什么成功登录后我的主页仍在工作,当我再次回击我的web返回登录表单时,我希望登录成功后会话否允许我的主页再次进入登录表单
$this->session->set_userdata('is_admin_login', 1)
function index(){
    if ($this->session->userdata('is_admin_login')) {
        redirect('admin/home');  // redirect to desired location
    }

    $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 __construct ()
    {
        parent ::__construct ();

        if ($this -> session -> userdata ( "akses" ) == 1) {
            redirect ( "admin/dashboard" , "refresh" );
        }
        if ($this -> session -> userdata ( "akses" ) == 2) {
            redirect ( "user/dashboard" , "refresh" );
        }
    }