问题使用Codeigniter验证登录

时间:2017-06-01 09:14:42

标签: php html forms codeigniter validation

Using POST it remains empty,使用GET数组并不是空的,但即使是正确的登录详细信息也无法正常工作。使用codeigniter在站点中创建登录区域,但密码未正确验证或根本无法验证。我已经研究过,但我不确定为什么问题仍然存在。它只是说每个密码都错了。此外,密码不能通过POST获取,但可以使用GET。这是视图区域:

<div class="panel-heading">
                        <h3 class="panel-title">Please Sign In</h3>
                    </div>
                    <?php if(isset($_SESSION)) {
                        echo $this->session->flashdata('flash_data');
                        } ?>
                    <div class="panel-body">

                    <form action="<?php echo base_url('Login/index'); ?>" method="POST">

                            <fieldset>
                                <div class="form-group">
                                    <input class="form-control" placeholder="Username" name="username" type="text" autofocus>
                                </div>
                                <div class="form-group">
                                    <input class="form-control" placeholder="Password" name="user_password" type="password" value="">
                                </div>
                                <div class="checkbox">
                                    <label>
                                        <input name="remember" type="checkbox" value="Remember Me">Remember Me

                                    </label>
                                </div>

然后是控制器:

 $data = array();

        print_r($_POST);

        if($_POST){
                $result=$this->User->validate($_POST);

                //print_r($result);

                if(!empty($result)){
                    $data=[
                    'id'=> $result[0]['id'], 
                    'username'=>$result[0]['username']
                    ];

                    //print_r($data);

                    $this->session->set_userdata($data);
                    redirect(base_url('dashboard/index'));
                }else{
                    $this->session->set_flashdata('flash_data', 'Username or password is incorrect!');
                    redirect(base_url('login/index'));
                }
        }   

        $page='login';
        if (!file_exists(APPPATH.'views/'.$page.'.php')){
                    show_404();
        }
        $this->load->view($page);

     }

和型号:

function validate($data){
    $this->db->select('id, username');
    //$this->db->from('login');
    $this->db->where('username', $data['username']);
    $this->db->where('user_password', md5($data['user_password']));
    $this->db->limit(1);
    $res = $this->db->get('login')->result_array(); 

    return $res;

    //$query=$this->db->get();
  }

  function __destruct() {
        $this->db->close();
    }

3 个答案:

答案 0 :(得分:0)

$(document).keydown(function(e){
    if (e.keyCode == 37) { 
       alert( "left pressed" );
       return false;
    }
});

答案 1 :(得分:0)

首先,您需要在视图页面中关闭表单标记。然后检查,您的表格数据会发布到控制器。

为什么要在模型中评论$this->db->from('login')。请在模型中使用此代码验证数据库中的用户登录数据。

function validate($data){

    $this->db->select('id, username');
    $this->db->from('login');
    $this->db->where('username', $data['username']);
    $this->db->where('user_password', md5($data['user_password']));
    $this->db->limit(1);
    $res = $this->db->get(); 

    if($res->num_rows()){
       return $res->result_array();
    }else{
      return;
    }

  }

答案 2 :(得分:0)

使用

$this->input->post()

insted of

$_POST

此外,如果您使用过盐,请确保使用盐密码为md5。

md5($this->config['salt'].$data['user_password'])
相关问题