2012-02-12 3 views
-1

여기 codeigniter PHP 프레임 워크를 사용하여 만든 mysql db에 저장된 사용자 이름과 비밀번호를 찾는 쿼리입니다.데이터베이스에서 쿼리하여 ID와 비밀번호가 올바르게 작동하지 않음을 확인하십시오.

public function find_user($username,$password) 
{ 
    $sql = "SELECT * 
      FROM users_login 
      WHERE username = ? AND password = ?"; 

    $query = $this->db->query($sql,array($username,md5($password))); 

    if($query->num_rows() == 1) 
    { 
     return TRUE; 
    } 
    else 
    { 
     return FALSE; 
    } 
} 

여기서 db는 : id,username,password입니다. 그것이해야하는 것처럼 작동하지 않기 때문에 약간의 실수가 있습니까?

여기 내 컨트롤러입니다. 아마 오류가 여기에 있습니다 : 우선

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 


class Login extends CI_Controller 
{ 
    public function __construct() 
    { 
     parent::__construct(); 
     $this->load->database(); /* This function it's used to connect to database */ 
     $this->load->model('User','user'); /* This call the model to retrieve data from db */ 
    } 


    public function index() 
    { 
     if(!file_exists('application/views/login.php')) 
     { 
      show_404(); 
     } 

     $this->load->helper('form'); 
     $this->load->library('form_validation'); 

     $this->form_validation->set_rules('username','username','trim|required|xss_clean'); 
     $this->form_validation->set_rules('password','password','trim|required|xss_clean|callback_check_pass'); 

     if($this->form_validation->run() == FALSE) 
     { 
      $data['title'] = "User Access"; 
      $this->load->view('login', $data); 
     } 
     else 
     { 
      $data['title'] = " "; 
      $this->load->view('/templates/index',$data);    
     } 
    } 

    public function pass_check($pass) 
    { 
     $username = $this->input->post('username'); 

     $result = $this->user->find_user($username,$pass); 

     if($result) 
     { 
      return TRUE; 
     } 
     else 
     { 
      $this->form_validation->set_message('pass_check','Invalid username or password! Try Again, please!'); 
      return FALSE; 
     } 
    } 
} 
+1

몇 가지 : ** (1) ** 무엇이 질문입니까? ** (2) **'md5'를 사용 하시겠습니까? ['sha1'] (http://php.net/manual/en/function.sha1.php)은 암호 저장에 더 좋은 옵션입니다. – rdlowrey

+0

무엇이 문제입니까? –

+0

나는 글을 편집했다. 어떤 실수가 있는지 알고 싶습니다 – Mazzy

답변

1

Mazzy,이 기억 :

if($query->num_rows() == 1) 
{ 
    return TRUE; 
} 
else 
{ 
    return FALSE; 
} 

를 기록 할 수있는 : 나는 PHP에 대해 잘 모르는

return $query->num_rows() == 1; 

/CodeIgniter 기본 구문이지만 훨씬 더 컴팩트합니다 (나에게 편안함).

이제 문제를 파헤 치려고합니다. $query->num_rows()은 DB에없는 특정 사용자/암호 조합을 반환합니까?

은 (0보다 큰) 뭔가 후 수동으로 데이터를 확인하고 해당 사용자/암호 조합과 일치하는 DB의 레코드가 있는지해야 일치됩니다.

관련 문제