dtc66318 2013-02-14 00:32
浏览 45
已采纳

CodeIgniter PHP错误登录表单

I am working on a login form using code igniter. I can get the form to display alright but when I click to login I get the following error displayed:

A PHP Error was encountered

Severity: Notice

Message: Undefined property: CI_DB_mysql_driver::$query

Filename: models/membership_model.php

Line Number: 8

This is m membership_model.php file

    class Membership_model extends CI_Model{

    function validate(){
        $this->db->where('username', $this->input->post('username'));
        $this->db->where('password', md5($this->input->post('password')));
        $this->$query = $this->db->query->get('members');

        if($query->num_rows != 0){
            return true;
        }
    }

}

This is my login.php file which is my main controller.

class Login extends CI_CONTROLLER{


function index()
{
    $data['main_content'] = 'login_form';
    $this->load->view('includes/template', $data);
}

function validate_credentials()
{
    //load model to query db
    $this->load->model('membership_model');
    $query = $this->membership_model->validate();

    if($query){ //if credentials validated
        $data = array(
            'username' => $this->input->post('username'),
            'is_logged_in' => true

            );

            $this ->session->set_userdata($data);
            redirect('site/members_area');
    }

    else{ //if not validated load login form again.
        $this->index();

    }

}

This is a screen shot of the error message I am getting

screen showing error message

Any ideas what could be going wrong? I haven't a clue! I've looked on the internet but nothing seems to help me. Has anyone encountered this problem. I've been following this tutorial video but it is using an older version of code igniter so I've been making changes as I go.

http://www.youtube.com/watch?v=-fLtTRYQX0M http://net.tutsplus.com/tutorials/php/codeigniter-from-scratch-day-6-login/

  • 写回答

2条回答 默认 最新

  • dqpciw9742 2013-02-14 01:08
    关注
    function validate(){
        $this->db->where('username', $this->input->post('username'));
        $this->db->where('password', md5($this->input->post('password')));
        $this->$query = $this->db->query->get('members');
    
        if($query->num_rows != 0){
            return true;
        }
    }
    

    should be:

    function validate()
    {
        $array = array(
            'username' => $this->input->post('username'), 
            'password' => md5($this->input->post('password')));
        $query = $this->db->get_where('members', $array); 
        if ($query->num_rows() > 0)
        {
            return true;
        }
    }
    

    Note: get_where() may be called getwhere() if you are using an older version of CI

    Btw you shouldn't be using MD5 for hashing your passwords. You should be using BCrypt as MD5 is insecure.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持