Codeigniter与数据库的比较输入?

时间:2014-05-01 15:21:42

标签: php codeigniter

我尝试比较数据库中从输入到字符串的字符串。 这是我的代码:

控制器:

public function __construct() {

        parent::__construct();  
        $this->captcha_rejestracja = rand(1,40);

    }
    public function register() {

    $str = $this->input->post('captcharejestr');
    $this->form_validation->set_rules('captcharejestr', 'kod z obrazka', 'trim|required|alpha_numeric|xss_clean|callback_captcha_check[$str]');

    }
    public function captcha_check($str) {

            $jakacaptcha = $this->captcha_rejestracja;
            $this->load->model('Tresci');

            if ($str != $this->Tresci->captcha($jakacaptcha))
            {
                $this->form_validation->set_message('captcha_check', 'Błędnie przepisany kod z obrazka.');
                return FALSE;
            }
            else
            {
                return TRUE;
            }

        }

型号:

public function captcha($jakacaptcha) {

        $query = $this->db->query('SELECT kod FROM captcha WHERE numer='.$jakacaptcha.'');

        $row = $query->row_array();
        return $row['kod'];

    }

我不知道问题出在哪里,因为每次我从回调中返回FALSE?

1 个答案:

答案 0 :(得分:0)

您似乎没有运行表单验证。

public function __construct()
{
    parent::__construct();

    // this is somewhat confusing, why randon value ?
    // the database query should have one value :-/
    $this->captcha_rejestracja = rand(1,40);

    $this->load->model('Tresci');

}

public function register()
{
     $this->form_validation->set_rules('field', 'label', 'callback_captcha_check' );

     if(!$this->form_validation->run()){
         //show the form again
         return;
     }

     //create a new user
 }

 public function captcha_check($str)
 {
     $this->form_validation->set_message('captcha_check', 'Message here...');

     $result = $this->tresci->captcha($this->captcha_rejestracja);

     return ( $str == (string)$result ) ? true : false;
 }