2013-02-14 4 views
1

Я работаю над формой входа с помощью воспламенителя кода. Я могу получить форму для отображения в порядке, но когда я нажимаю войти я получаю следующее сообщение об ошибке отображается:CodeIgniter PHP error Форма входа

A PHP Error was encountered 

Severity: Notice 

Message: Undefined property: CI_DB_mysql_driver::$query 

Filename: models/membership_model.php 

Line Number: 8 

Это файл м membership_model.php

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; 
     } 
    } 

} 

Это мой файл login.php, который мой главный контроллер.

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(); 

    } 

} 

Это моментальный снимок экрана сообщения об ошибке я получаю

screen showing error message

Любые идеи, что может быть неправильно? Я понятия не имею! Я смотрел в интернете, но мне ничего не помогает. Кто-нибудь столкнулся с этой проблемой. Я слежу за этим учебным видео, но он использует более старую версию воспламенителя кода, поэтому я делаю изменения, когда я иду.

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

+0

ли вы активная запись включена? –

+0

Я так не думаю, найду ли это в файле конфигурации? – Javacadabra

+0

Он находится в вашем файле 'application/database.php' и должен быть этим' $ active_record = TRUE; 'Также это первый раз, когда вы делаете запросы к базе данных в своем приложении, так как вы смогли успешно подключиться ранее и получить данные? –

ответ

1
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; 
    } 
} 

должно быть:

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; 
    } 
} 

Примечание: get_where() можно назвать getwhere(), если вы используете старую версию CI

Btw вы не должны быть используя MD5 для хэширования ваших паролей. Вы должны использовать BCrypt, поскольку MD5 небезопасен.

+0

Я изменил его, как вы предложили, но безрезультатно. Я вижу, как это вызвало проблему. Небрежно с моей стороны. Я разместил еще один вопрос, который каким-то образом связан с моей проблемой, потому что теперь эта проблема не видна ... http: // stackoverflow.com/questions/14866158/codeigniter-404-bad-request-error # comment20840624_14866158 – Javacadabra

+0

Вы можете использовать метод 'get_where()'. Я переделаю ваш код, чтобы использовать его. –

+0

См. Мои правки, пожалуйста. –

0

Во-первых, очевидно, вы загружаете библиотеку базы данных?

Во-вторых, почему вы добавляете get() после запроса()?

т.е.

$this->db->query->get('members'); 

запрос() представляет собой автономные функции, пример которого говорит, что, как предполагается, будет использоваться как это:

$query = $this->db->query('YOUR QUERY HERE'); 

тогда получают() является частью активной записи.

$query = $this->db->get('mytable'); 

или в вашем случае:

$query = $this->db->get('members'); 
Смежные вопросы