Вопрос по php – Невозможно получить доступ к сообщению об ошибке, соответствующему имени вашего поля

21

У меня есть функция обратного вызова, который check_captcha, который видит, если$row является==0 или же== 1 (эта информация запрашивается из sql).

Проблема в том, что я не могу позвонить из$self->form_validation->set_rule('captcha', 'call_back_check_captcha') из-за того, что моя функция принимает в$row вар. Теперь, когда я это называю, я получаю сообщение об ошибке Unable to access. Как я могу сделать эту работу?

function check_captcha( $row)
{
    if($row ==0)//didnt find any
    {
        $this->form_validation->set_message('captcha', 'text dont match captcha');
        return FALSE;
    }
    else
    {
        return TRUE;
    }
}


function create_member() 
        {   

            $past = time() - 7200; 

        $this->db->query("DELETE FROM captcha WHERE captcha_time <".$past);                 
        $sql = "SELECT COUNT(*) AS count FROM captcha WHERE word =? AND ip_address =?";     
        $binds = array($_POST['captcha'], $this->input->ip_address(), $past);
        $query= $this->db->query($sql, $binds);

        $row = $query->row(); //row query rows : if it found an entry =1 

            $self->check_captcha($row->count);

        //VALIDATIONS
        $this->form_validation->set_rules('first_name', 'First Name', 'trim|required');
        $this->form_validation->set_rules('last_name', 'Last Name', 'trim|required');      
        $this->form_validation->set_rules( 'email_address', 'Email Address', 'trim|required|valid_email|unique[user.email_address]');
        $this->form_validation->set_rules('username', 'Username', 'trim|required|min_length[4]|unique[user.username]');
        $this->form_validation->set_rules('password', 'Password', 'trim|required|min_length[4]|max_leng[32]');
        $this->form_validation->set_rules('password2', 'Password Confirmation','trim|required|matches[password]');
        if(!$_POST['captcha']){
        $this->form_validation->set_rules('captcha', 'Captcha','trim|required');}else{
        $this->form_validation->set_rules('captcha', 'Captcha', 'callback_check_captcha');}

        if($this->form_validation->run()==FALSE)
        {   //this -> to the curr obj(UserController) && registraion() points to the the function in controller
            $this->registration();  //reloads reg page so they can fill out right stuff
        }
        else
ты должен добавить_ перед именем функции, чтобы я не мог быть вызван из URL.check_captcha должно быть_check_captcha Ravinder Payal

Ваш Ответ

4   ответа
9

На самом деле, лучший способ вместо записи сообщения об ошибке непосредственно на контроллер - добавить эту запись & quot; check_captcha & quot; на языках.

В моем случае это сообщение для правила проверки (проверки формы) "less_than" не было

Я изменил файл/system/language/??/form_validation_lang.php, Я добавил недостающую запись.

Error: User Rate Limit Exceeded
2

Это помогло мне

перейдите в application / config / autoload.php и добавьте «Безопасность» вспомогательный класс там.

$autoload['helper'] = array('security');

Или добавьте это перед проверкой формы

$this->load->helper('security');
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
0

добавьте запись в ваш языковой файл с именем части внутри (yourfieldname) сообщения об ошибке - это решило проблему

45
$this->form_validation->set_message('check_captcha', 'text dont match captcha');

Название сообщения соответствуетfunction, неfield, Так что установите его на & quot;check_captcha& Quot; исправит вашу ошибку Сообщение об ошибке будет использовать правильное имя поля.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceededset_message()Error: User Rate Limit Exceededset_rules()Error: User Rate Limit Exceededset_rules()Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded David Yang Liu

Похожие вопросы