Auf eine Fehlermeldung, die Ihrem Feldnamen entspricht, kann nicht zugegriffen werden

Lesezeit: 4 Minuten

Benutzer-Avatar
David Yang Liu

Ich habe eine Callback-Funktion, die check_captcha sieht, ob $row ist ==0 oder == 1 (diese Informationen werden von SQL abgefragt).

Das Problem ist, dass ich es nicht anrufen kann $self->form_validation->set_rule('captcha', 'call_back_check_captcha') aufgrund der Tatsache, dass meine Funktion in a $row Var. So wie ich es jetzt nenne, bekomme ich eine Fehlermeldung, auf die nicht zugegriffen werden kann. Wie kann ich das zum Laufen bringen?

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

  • Sie sollten a hinzufügen _ vor Funktionsname , damit ich nicht von url aufgerufen werden konnte. check_captcha sollte sein _check_captcha

    – Ravinder Payal

    17. April 2016 um 5:07 Uhr

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

Der Nachrichtenname entspricht dem Funktionnicht der aufstellen. Setzen Sie es also auf “check_captcha” wird Ihren Fehler beheben. Die Fehlermeldung verwendet den korrekten Feldnamen.

  • habe den gleichen fehler gemacht thnx

    – Arzon Barua

    2. Februar 2016 um 7:52 Uhr

  • Es hat mich verwirrt, Sie verwenden set_message() Hier verwendet aber der Fragestarter set_rules(). Ist das ein Tippfehler von dir? Bzw benutze ich auch set_rules() und habe dieselbe Nachricht.

    – Roland

    27. März 2018 um 14:06 Uhr

  • Ich habe den Funktionsnamen anstelle des Feldnamens verwendet, aber es wird immer noch dieselbe Fehlermeldung angezeigt. Ich habe bereits eine separate Sprachdatei mit Fehlermeldungen, daher würde ich es vorziehen, der form_validation_lang-Datei keine weiteren Zeilen hinzuzufügen, um in Zukunft Diskrepanzen zu vermeiden . was sollte ich jetzt tun?

    – dapidmini

    6. April 2020 um 5:58 Uhr


Benutzer-Avatar
Helton Ritter

Eigentlich wäre der beste Weg, anstatt die Fehlermeldung direkt auf den Controller zu schreiben, diesen Eintrag “check_captcha” bei Sprachen hinzuzufügen.

In meinem Fall war die Meldung für die Validierungsregel (Formularvalidierung) “less_than” nicht vorhanden.

Ich habe die Datei geändert /system/sprache/??/form_validation_lang.php. Ich habe den fehlenden Eintrag ergänzt.

  • Ja. Ich habe diese Meldung auch behoben, indem ich fehlenden Sprachtext hinzugefügt habe.

    – Mythenschütze

    29. November 2013 um 11:53 Uhr

Das hat mir geholfen

Gehen Sie zu application/config/autoload.php und fügen Sie dort die Hilfsklasse “Security” hinzu.

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

Oder fügen Sie dies vor Ihrer Formularvalidierung hinzu

$this->load->helper('security');

Benutzer-Avatar
Goshika Mahesh

Sie können einstellen Fehlermeldung in set_rules :

$this->form_validation->set_rules('captcha', 'Captcha', 'callback_check_captcha',

array('check_captcha' => 'text dont match captcha'));

Fügen Sie Ihrer Sprachdatei einen Eintrag mit dem Namen des Teils in (Ihr Feldname) der Fehlermeldung hinzu – das hat das Problem gelöst

Benutzer-Avatar
Edwin KLIJN

Auch wenn die Frage bereits beantwortet ist, gibt es einen weiteren Fehler, der zur selben Fehlermeldung führen kann:

Wenn Sie Ihren Rückruf anrufen checkCaptcha, es wird nicht funktionieren. Am liebsten immer einen Namen wie check_captcha wie im Codeigniter/Allgemeine Themen/PHP-Styleguide empfohlen.

1093180cookie-checkAuf eine Fehlermeldung, die Ihrem Feldnamen entspricht, kann nicht zugegriffen werden

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy