首页 > 解决方案 > Codeigniter 表单发布数据为空

问题描述

我一直在尝试在 xampp 本地设置现有的 CI 3.1 项目。数据库已连接且网站已加载,但登录/注册/表单无法正常工作。

经过详细检查,发现表格没有在帖子数据中发送。帖子对象为空。

下面是代码。

登录视图

<!-- language-all: lang-php-->
<form id="app-form" class="card auth_form" method="post" action="<?php echo site_url('auth/login/') ?>">
                <div class="header">
                    <img class="logo" src="<?php echo base_url() ?>assets/images/logo.svg" alt="">
                    <h5>Log in</h5>
                </div>
                <div class="body">
                    <div class="input-group mb-3">
                        <input type="text" class="form-control" placeholder="Email" name="email" value="" required>
                        <div class="input-group-append">
                            <span class="input-group-text"><i class="zmdi zmdi-account-circle"></i></span>
                        </div>
                    </div>
                    <div class="input-group mb-3">
                        <input type="password" class="form-control" placeholder="Password" name="password" value="" required>
                        <div class="input-group-append">
                            <span class="input-group-text"><a href="<?php echo site_url('/auth/forgotpassword') ?>" class="forgot" title="Forgot Password"><i class="zmdi zmdi-lock"></i></a></span>
                        </div>
                    </div>
                    <!--<div class="checkbox">
                        <input id="remember_me" type="checkbox">
                        <label for="remember_me">Remember Me</label>
                    </div>-->
                    <input type="hidden" name="<?=$this->security->get_csrf_token_name()?>" value="<?=$this->security->get_csrf_hash()?>" >
                    <button class="btn btn-primary btn-block waves-effect waves-light ladda-button" data-style="expand-right">SIGN IN</button>
                    <div class="signin_with mt-3">
                        <p class="mb-0"><a href="<?php echo site_url('/auth/signup') ?>" title="Sign Up">Sign Up</a></p>
                        <p class="mb-0">or <a href="<?php echo site_url('/auth/forgotpassword') ?>" title="Sign Up">Forgot Password?</a></p>                            
                        <!--<button class="btn btn-primary btn-icon btn-icon-mini btn-round facebook"><i class="zmdi zmdi-facebook"></i></button>
                        <button class="btn btn-primary btn-icon btn-icon-mini btn-round twitter"><i class="zmdi zmdi-twitter"></i></button>
                        <button class="btn btn-primary btn-icon btn-icon-mini btn-round google"><i class="zmdi zmdi-google-plus"></i></button>-->
                    </div>
                </div>
            </form>

认证控制器

public function login()
{   
    $response = array('type'=>'', 'page'=>'', 'message'=>'');
    // Load the model
    $this->load->model('AuthModel');
    // Validate the user can login
    $result = $this->AuthModel->validate();
    var_dump($_POST);
    // Now we verify the result
    if(!$result){
        $response['type'] = 'error';
        $response['message'] = 'Invalid username and/or password.';
    }else{
        $response['type'] = 'redirect';
        $response['page'] = site_url().'RecordVerify/lists';
        $response['message'] = 'Login successful';
    }
    echo json_encode($response);
}

身份验证

public function validate()
{
    // grab user input
    $email = $this->security->xss_clean($this->input->post('email'));
    $password = $this->security->xss_clean($this->input->post('password'));

    // Prep the query
    $this->db->select("users.*,user_roles.role_name");
    $this->db->from('users');
    $this->db->join('user_roles', 'users.role = user_roles.URID');
    $this->db->where('users.email', $email);
    //$this->db->where('users.user_password', password_verify($password,'user_password'));
    $this->db->where('users.status', 1);
    $query = $this->db->get();
    // Let's check if there are any results
    if ($query->num_rows() != 0) {
        // If there is a user, then create session data
        $row = $query->row();
        $thehashvalue= hash('sha256', $row->salt . hash('sha256', $password) );
        if($row->password == $thehashvalue)
        {
            $data = array(
                'user_id' => $row->id,
                'first_name' => $row->first_name,
                'last_name' => $row->last_name,
                'full_name' => $row->first_name.' '.$row->last_name,
                'email' => $row->email,
                'user_role_id' => $row->role,
                'user_role_name' => $row->role_name,
                'user_report' => $row->report,
                'validated' => true
            );
            $this->session->set_userdata($data);
            return true;
        }else{
            return false;
        }
    } else {
        // If the previous process did not validate
        // then return false.
        return false;
    }
}

标签: phpcodeigniterpostmodel-view-controllerxampp

解决方案


尝试先获取输入,然后将其传递给模型...在您的控制器 Auth/login 中输入此代码

$email = $this->security->xss_clean($this->input->post('email')); $password = $this->security->xss_clean($this->input->post('password'));

然后通过调用将其传递给您的模型身份验证/验证

$result = $this->AuthModel->validate($email, $password);

代码应该是这样的......

授权控制器

public function login()
{   
    $email = $this->security->xss_clean($this->input->post('email'));
    $password = $this->security->xss_clean($this->input->post('password'));

    $response = array('type'=>'', 'page'=>'', 'message'=>'');
    // Load the model
    $this->load->model('AuthModel');
    // Validate the user can login
    $result = $this->AuthModel->validate($email, $password);
    var_dump($_POST);
    // Now we verify the result
    if(!$result){
        $response['type'] = 'error';
        $response['message'] = 'Invalid username and/or password.';
    }else{
        $response['type'] = 'redirect';
        $response['page'] = site_url().'RecordVerify/lists';
        $response['message'] = 'Login successful';
    }
    echo json_encode($response);
}

授权模型

public function validate($email, $password)
{
    // Prep the query
    $this->db->select("users.*,user_roles.role_name");
    $this->db->from('users');
    $this->db->join('user_roles', 'users.role = user_roles.URID');
    $this->db->where('users.email', $email);
    //$this->db->where('users.user_password', password_verify($password,'user_password'));
    $this->db->where('users.status', 1);
    $query = $this->db->get();
    // Let's check if there are any results
    if ($query->num_rows() != 0) {
        // If there is a user, then create session data
        $row = $query->row();
        $thehashvalue= hash('sha256', $row->salt . hash('sha256', $password) );
        if($row->password == $thehashvalue)
        {
            $data = array(
                'user_id' => $row->id,
                'first_name' => $row->first_name,
                'last_name' => $row->last_name,
                'full_name' => $row->first_name.' '.$row->last_name,
                'email' => $row->email,
                'user_role_id' => $row->role,
                'user_role_name' => $row->role_name,
                'user_report' => $row->report,
                'validated' => true
            );
            $this->session->set_userdata($data);
            return true;
        }else{
            return false;
        }
    } else {
        // If the previous process did not validate
        // then return false.
        return false;
    }
}

推荐阅读