【问题标题】:Error: page requested not found codeigniter错误:未找到请求的页面 codeigniter
【发布时间】:2020-06-03 11:08:47
【问题描述】:

控制器

public function index()
{
    //load session library
    $this->load->library('session');

    if($this->session->userdata('user')){
        // redirect('home');
        $this->load->view('heropage');
    }
    else{
        $this->load->view('login_page');
    }
}
public function login(){
    $email = $_POST['email'];
    $password = $_POST['password'];

    $data = $this->Users_model->login($email, $password);

    if($data)
    {
        $id=$data[0]->id;
        $first_name=$data[0]->firstname;
        $last_name=$data[0]->lastname;
        $grade=$data[0]->grade;
        $points=$data[0]->points;
        $this->session->set_userdata('user_id',$id);
        $this->session->set_userdata('lname',$last_name);
        $this->session->set_userdata('user', $email);
        $this->session->set_userdata('fname',$first_name);
        $this->session->set_userdata('grade',$grade);
        $this->session->set_userdata('pts',$points);
        $this->getImg();
        redirect('home');
    }
    else{
        header('location:'.base_url().$this->index());
        $this->session->set_flashdata('error','Invalid login. User not found');         }
    }

查看

<?php if(isset($_SESSION['success'])) :?>
<div class="alert alert-success"><?=$_SESSION['success'];?></div>
<?php endif; if(isset($_SESSION['error'])) :?>
<div class="alert alert-warning"><?=$_SESSION['error'];?></div>
    <?php endif;?>
    <!-- End alerts -->
    <form action="<?php echo base_url();?>index.php/User/login" method="post" accept-charset="utf-8">
        <div class="form-group">
            <label>Email:</label>
            <input  type="text" class="form-control" name="email" placeholder="Email">
            <?php echo form_error('email'); ?>
        </div>
        <div class="form-group">
            <label>Password:</label>
            <input type="password" class="form-control"name="password" placeholder="Password">
            <?php echo form_error('password'); ?>
        </div>
        <div class="form-group">
            <button class="btn btn-sm btn-success" type="submit" align="center" name="login" class="submit">Log in</button>
        </div>
</div>
    </form>

型号

public function login($email,$password)
{           
    $query = $this->db->get_where('users', array('email'=>$email));
    if($query->num_rows() == 1 )
    {
        return $query->result();
    }
}

在尝试登录时,我得到了错误页面找不到。如果会话正确,我希望它转到主页。这是错误消息:

404 页面未找到 未找到您请求的页面。

路由中我也按需要设置了,怎么解决这个错误

【问题讨论】:

  • 我认为你的表单action应该是&lt;?php echo base_url();?&gt;user/login"

标签: codeigniter


【解决方案1】:
  • 我认为您的表单操作应该是&lt;?php echo base_url(); ?&gt;user/login
  • 此外,在您的 model 中,您不会在任何地方检查 password
  • 如果找不到电子邮件或找到超过 1 个结果,您也不会返回任何内容 - ($query-&gt;num_rows() == 1)

型号

    public function login($email,$password)
    {

        $query = $this->db->get_where('users', array('email' => $email, 'password' => $password))->result(); // you should use row() here to return only 1 row.

        return $query; // you should check the uniqueness of email on registration, not here -- not allow duplicate email on registration
    }

控制器

public function login(){

    $email    = $_POST['email']; // $this->input->post('email');
    $password = $_POST['password'];

    $data = $this->Users_model->login($email, $password);

    if( !empty($data) )  // if no result found it'll be empty
    {
        // your code
    }
    else{
        header('location:'.base_url().$this->index());
        $this->session->set_flashdata('error','Invalid login. User not found');
    }
}

看看,如果这对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-16
    • 1970-01-01
    • 2013-08-03
    • 2015-03-30
    • 1970-01-01
    • 2012-08-18
    相关资源
    最近更新 更多