当前位置: 首页 > 知识库问答 >
问题:

登录会话无法使用codeigniter 3.1。11,PHP7.4

柯书
2023-03-14

我试图建立一个简单的登录会话,但我被重定向到登录页面,这是我的登录。php控制器。


> <?php class Login extends CI_Controller
 {  function __construct()  
{
>       parent::__construct();  
    if($this->session->userdata('admin'))
>           redirect('admin/dashboard'); 
    }   
function index() 
    {
>       $this->load->view('admin/login', $data); 
    }   function verify()   {
>       //username:admin password:123456    
    $this->load->model('admin');    
>   $check = $this->admin->validate();   
    if($check)      { 
>           $this->session->set_userdata('admin','1');
>           redirect('admin/dashboard');     
    }       
else        
{
>           
redirect('admin');      }    }
>   
> 
> 
> }

<?php
    class Dashboard extends CI_Controller
    {
        function __construct()
        {
            parent::__construct();
            if(!$this->session->userdata('admin'))
                redirect('admin');
        }
        function index()
        {
            $this->load->view('admin/dashboard');
        }
        function logout()
        {
            $this->session->sess_destroy();
            redirect('admin');
        }
    }

这是数据库。php


   $active_group = 'default';
               $query_builder = TRUE;
               
               $db['default'] = array(
                   'dsn'   => '',
                   'hostname' => 'localhost',
                   'username' => 'root',
                   'password' => '',
                   'database' => 'ASGB-test',
                   'dbdriver' => 'mysqli',
                   'dbprefix' => '',
                   'pconnect' => FALSE,
                   'db_debug' => (ENVIRONMENT !== 'production'),
                   'cache_on' => FALSE,
                   'cachedir' => '',
                   'char_set' => 'utf8',
                   'dbcollat' => 'utf8_general_ci',
                   'swap_pre' => '',
                   'encrypt' => FALSE,
                   'compress' => FALSE,
                   'stricton' => FALSE,
                   'failover' => array(),
                   'save_queries' => TRUE
               )
       
       ;

这是我的autoload.php,我在这里激活数据库和会话库

$autoload['库']=数组('数据库','会话');

这里是路线。php,welcome controller基本上是最初的codeigniter欢迎视图,我还定义了管理路由


    $route['default_controller'] = 'welcome';
    $route['admin'] = 'admin/login';
    $route['404_override'] = '';
    $route['translate_uri_dashes'] = FALSE;

这是管理模式。php

   <?php
class Admin_model extends CI_Model
{
    function validate()
    {
        $arr['username'] = $this->input->post('Username');
        $arr['password'] = md5($this->input->post('Password'));
        return $this->db->get_where('admins',$arr)->row();
    }
}

我肯定我输入正确的密码和用户名,但它只是重定向我到登录页面

共有3个答案

岳阳文
2023-03-14

首先,我不知道$data在Login控制器的index()中做了什么,在你的模型管理员中验证()做了什么,那么我认为最好把Login Controller中的登录和注销函数作为以下:

<?php 
class Login extends CI_Controller{ 
    
    function __construct(){      
        parent::__construct();
    }   

    function index() {
        $this->load->view('admin/login'); 
    }

    public function log_in()
    {
        $this->load->model('admin');

        $this->form_validation->set_rules('username', 'Username', 'trim|required', array('required' => 'Username required'));
        $this->form_validation->set_rules('password', 'Password', 'trim|required', array('required' => 'Password required'));

        //username:admin password:123456
        if ($this->form_validation->run() !== false) {
            $username = $this->input->post('username');
            $password = $this->input->post('password');

            $check = $this->admin->validate($username, $password);

            if ($check != false) {
                $this->session->set_userdata('admin','1');
                redirect('Dashboard');
            } else {
                redirect('Login');
            }
        }
        $this->load->view('admin/login'); 
    }
    
    public function log_out()
    {
        $this->session->sess_destroy();
        redirect('Login'); 
    }
}
?>

然后您的仪表板控制器如下:

<?php
    class Dashboard extends CI_Controller
    {
        function __construct()
        {
            parent::__construct();
            if(!$this->session->userdata('admin'))
                redirect('Login');
        }
        function index()
        {
            $this->load->view('admin/dashboard');
        }
    }
?>

管理模型如下所示:

<?php
class Admin extends CI_Model
{
    function validate($username, $password)
    {
        $this->db->select('*')
            ->from('admins')
            ->where('username', $username)
            ->where('password', md5($password));
        $query = $this->db->get();
    
        return $query->result();
    }
}
?>
慕凡
2023-03-14

解决,我实际上是拼写错误的“用户名”和“密码”,通过解决我登录成功。谢谢你的回答

龙永逸
2023-03-14

你必须使用

session_start();

在每个需要会话变量的页面的php脚本的开头。

 类似资料:
  • 问题内容: 我正在尝试使用Python请求登录LinkedIn: 我似乎无法使用此方法登录。我什至尝试在有效负载中使用csrf等,但是会话不是应该为您解决吗? 关于最后一行的注意事项:我使用标题来检查是否已成功登录。(如果我已经登录,则应该看到“ Welcome!| LinkedIn”,而我会看到“世界上最大的专业网络| LinkedIn”) 我想念什么吗? 问题答案: 我修改了一个网络抓取模板,

  • 本文向大家介绍使用redis管理用户登录会话的方法,包括了使用redis管理用户登录会话的方法的使用技巧和注意事项,需要的朋友参考一下 登录和cookie缓存 对于用来登录的cookie,有两种常见的方法可以将登录信息存储在cookie里面:一种是签名(signed)cookie,另一种是令牌(token)cookie。 签名cookie通常会存储用户名,可能还有用户ID、用户最后一次成功登陆的时

  • 我已经使用jsp创建了一个登录环境<代码>索引。jsp,登录。jsp。我从数据库中获取用户名和密码。如果用户名和密码与数据库匹配,则登录过程将完美完成。当用户给出错误的名称或密码时,它会显示错误消息,并重定向到登录页面。没什么问题,但我第一次登录时遇到了一个问题。提交错误名称或密码后显示错误消息的位置,该位置显示为空。 为什么显示null? 下面是我的代码 指数jsp login.jsp

  • 问题内容: 我刚刚完成了在PHP中创建整个登录和注册systsem的操作,但是我的问题是我还没有使用任何会话。我是PHP的新手,以前从未使用过会话。我想做的是,在用户注册并填写登录表单后,他们仍将停留在同一页面上。因此,其中一部分将是会话已登录,另一部分将是其他(用户未登录,请显示登录表单)。谁能告诉我如何开始? 问题答案: 希望这可以帮助 :) 开始会话,您需要在页面顶部或在调用会话代码之前说出

  • 问题内容: 如果我想使用Web应用程序跟踪与每个客户端的对话状态,那么哪个更好的替代方法是使用Session Bean还是HTTP Session? 使用HTTP会话: 使用会话EJB: 在执行ServletContextListener时注册为Web应用程序侦听器: 在JSP中: 同一JSP正文中的其他地方: 在我看来,它们几乎是相同的,主要区别在于UserState实例是在前者中传输的,而在后

  • 我用auth0用angularjs创建函数login。 当我输入电子邮件和密码登录成功不返回信息,并再次重定向到登录页面。我检查数据返回看不到' id_token '。 app.js包括配置认证 身份验证服务.js