方法不重定向到代码点火器中的给定视图


method not redirecting to given view in codeigniter

我正在尝试在代码点火器中实现登录。一切正常,但是当我输入正确的用户名和密码时,它不会重定向到管理页面。请帮助我,出了什么问题。

login_control

class login_control extends CI_Controller
{
    public function __construct() {
        parent::__construct();
        $this->load->model('login_model');
    }
    function index()
    {
        $this->load->view('login_view');
    }
    function verify()
    {
        $query = $this->login_model->login();
        $this->load->library('form_validation');
$this->form_validation->set_rules('uname','Username','trim|required|min_length[8]');
$this->form_validation->set_rules('pass','Password','trim|required|max_length[6]');
        if($query)
        {
            $data = array(
                'username' => $this->input->post('uname'),
                'is_logged_in' => true
            );
            $this->session->set_userdata($data);
            redirect('admin_control/admin');
        }
        else 
        {
            $this->index();
            }
    }

login_model

class login_model extends CI_Model
{
    function login()
    {
        $this->db->where('username',  $this->input->post('uname'));
        $this->db->where('password', md5($this->input->post('pass')));
        $sql = $this->db->get("signup");
         if($sql->num_rows() == 1)
            {
                return true;
            }
     }
}

login_view

<body>
<div class="form-wrapper">
  <form action="login_control/verify" method="post">
    <h3>Login here</h3>
    <div class="form-item">
        <input type="text" name="uname" required="required" placeholder="Username" autofocus></input>
    </div>
    <div class="form-item">
        <input type="password" name="pass" required="required" placeholder="Password"></input>
    </div>
    <div class="button-panel">
        <input type="submit" class="button" title="Log In" value="Login"></input>
    </div>
  </form>
  <div class="reminder">
    <p>Not a member? <a href="#">Sign up now</a></p>
    <p><a href="#">Forgot password?</a></p>
  </div>
</div>
</body>

admin_control

<?php
class admin_control extends CI_Controller
{
    public function __construct() {
        parent::__construct();
        $this->is_logged_in();
    }
    function admin()
    {
        $this->load->view('admin_view');
    }
    function is_logged_in()
    {
        $login = $this->session->userdata('is_logged_in');
        if(!isset($login) || $login != TRUE)
        {
            echo 'Sorry, you are not a admin. ';
            die();
        }
    }
}

使用此代码

redirect('admin_control/admin',true);

redirect('admin_control/admin','refresh');

如果不删除索引.php

redirect('index.php/admin_control/admin',true);

您在查询数据库时在login_model中犯了一些错误。

取而代之的是:

class login_model extends CI_Model {
    function login() {
        $this->db->where('username', $this->input->post('uname'));
        $this->db->where('password', md5($this->input->post('pass')));
        $sql = $this->db->get("signup");
        if ($sql->num_rows() == 1) {
            return true;
        }
    }
}

使用这个 :

class login_model extends CI_Model {
    function login() {
        $this->db->select('id, username, password');
        $this->db->from('signup');
        $this->db->where('username', $this->input->post('uname'));
        $this->db->where('password', MD5($this->input->post('pass'));
        $this->db->limit(1);
        $sql = $this->db->get();
        if ($sql->num_rows() == 1) {
            return $query->result();
        } else {
            return false;
        }
    }
}

有关详细信息,请参阅此文档

试试 rhis

login_control

public function __construct() 
   {
        parent::__construct();
        $this->load->model('login_model');
    }
    function index()
    {
        $this->load->view('login_view');
    }
    function verify()
    {
        $query = $this->login_model->login();
        $this->load->library('form_validation');
        $this->form_validation->set_rules('uname','Username','trim|required|min_length[8]');
        $this->form_validation->set_rules('pass','Password','trim|required|max_length[6]');
        if($query!= null)
        {
            foreach ($query as $row) 
            {
                $data = array(
                    'username' => $row->username,
                    'is_logged_in' => true
                );
            $this->session->set_userdata($data);
            }
            redirect(base_url('admin_control/admin'),'refresh');
        }
        else 
        {
            $this->index();
        }

class login_model extends CI_Model
{
    function login()
    {
        $pass = md5($this->input->post('pass'));
        $this->db->where('username',  $this->input->post('uname'));
        $this->db->where('password',$pass);
        $sql = $this->db->get("signup");
         if($sql->num_rows() > 0)
            {
                   return $query->result();
            }
           else{
                  return false;
     }
}

最后我解决了我的问题!!!!

我要感谢所有与会者回答这个问题并感谢他们宝贵的时间。

实际上,表中 passwd 的数据类型是 VARCHAR (10)。我只是用 VARCHAR (255) 替换了它,我的问题解决了!..