it-swarm.com.de

Codeigniter 3 Auf eine Fehlermeldung kann nicht zugegriffen werden

Ich habe ein Problem mit der Funktion set_rules in Codeigniter 3

ich überprüfe die E-Mail des Benutzers:

$this->form_validation->set_rules('email', 'Email', 'required|trim|xss_clean|valid_email');

und wenn ich poste, bekomme ich diesen Fehler:

Kein Zugriff auf eine Fehlernachricht, die Ihrem Feldnamen E-Mail entspricht.

21
user3546854

Aus dem Codeigniter-Github:

Eine weitgehend unbekannte Regel für die XSS-Reinigung ist, dass es nur .__ sein sollte. auf Ausgabe angewendet, im Gegensatz zu Eingabedaten.

Diesen Fehler haben wir selbst mit unserer automatischen und globalen XSS gemacht Bereinigungsfunktion (siehe vorherigen Schritt zu XSS oben), jetzt in einer Mühe, diese Praxis zu entmutigen, wir entfernen auch 'xss_clean' aus der offiziell unterstützten Liste der Formularvalidierungsregeln.

Da die Form Validation-Bibliothek generell Eingabedaten überprüft, wird der Die 'xss_clean'-Regel gehört einfach nicht dazu.

Wenn Sie diese Regel wirklich anwenden müssen, sollten Sie jetzt auch Laden Sie den Security Helper, der xss_clean () als reguläre Funktion enthält und daher auch als Validierungsregel verwendet werden kann.

Link: https://github.com/bcit-ci/CodeIgniter/blob/develop/user_guide_src/source/installation/upgrade_300.rst#step-13-check-for-usage-of-the-xss_clean-form- Validierungsregel

Und wenn Sie es trotz allem wirklich brauchen, gehen Sie zu application/config/autoload.php:

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

Oder vor der Formularprüfung

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

xss_clean ist nicht mehr Bestandteil der Formularvalidierung.

Die Alternative ist, es nicht zu verwenden, da xss_clean desinfiziert und nicht validiert wird . xss_clean ist Teil des Sicherheitshelfers. Wenn Sie es tun müssen, tun Sie es nach der Validierung.

 $this->load->helper('security'); `
 $value = $this->input->post('email',TRUE); //where TRUE enables the xss filtering

Sie können auch die globale xss-Filterung in der Datei config.php aktivieren

$config['global_xss_filtering'] = TRUE;

12
Gaurav Bhatra

Andere haben darauf angedeutet, aber niemand hat es kurz gesagt: Um diesen Fehler zu beheben, entfernen Sie xxs_clean aus Ihrer Validierungsregel. Ich bin gerade auf dieses Problem gestoßen und konnte es dank der hier gegebenen Hinweise beheben.

Diese:

 $this->form_validation->set_rules('email', 'Email', 'required|trim|xss_clean|valid_email');

Wird dies:

 $this->form_validation->set_rules('email', 'Email', 'required|trim|valid_email');
5
sean.boyer

Laden Sie security Helper auf autoload.php

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

Keine Notwendigkeit mehr zu tun.

5
Kamlesh

Du solltest benutzen.

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

Sie können auch den folgenden Code in config/autoload.php verwenden, aber ich bevorzuge den obigen. Da bleibt das Codeigniter-Gewicht gewahrt. 

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

Das globale Überschreiben der Regel würde die nächste Möglichkeit mit benutzerdefinierten Nachrichten erweitern:

$this->form_validation->set_rules('email', 'Email', 'required|trim|xss_clean|valid_email',
        array('xss_clean' => 'Error Message: your xss is not clean.')
);
0
Tpojka