web-dev-qa-db-fra.com

Codeigniter 3 Impossible d'accéder à un message d'erreur

J'ai un problème avec la fonction set_rules dans Codeigniter 3

je vérifie le courrier électronique de l'utilisateur:

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

et quand je poste obtenir cette erreur:

Impossible d'accéder à un message d'erreur correspondant à votre nom de champ Email.

21
user3546854

Depuis le codeigniter github:

Une règle largement inconnue sur le nettoyage XSS est qu'il ne devrait s'agir que de appliqué à la sortie, par opposition aux données d'entrée.

Nous avons commis cette erreur nous-mêmes avec notre système XSS automatique et global fonction de nettoyage (voir l’étape précédente à propos de XSS ci-dessus), donc maintenant dans un effort pour décourager cette pratique, nous supprimons également 'xss_clean' à partir de la liste des règles de validation de formulaire officiellement prises en charge.

Comme la bibliothèque de validation de formulaire valide généralement les données d'entrée, le fichier La règle 'xss_clean' ne fait tout simplement pas partie de la règle.

Si vous devez vraiment, vraiment appliquer cette règle, vous devriez maintenant aussi chargez Security Helper, qui contient xss_clean () en tant que fonction normale et peut donc également être utilisé en tant que règle de validation.

Lien: 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-clean-form- règle de validation

Et si, malgré tout, vous en avez vraiment besoin, allez à application/config/autoload.php:

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

Ou, avant la validation de votre formulaire

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

xss_clean ne fait plus partie de la validation de formulaire.

L'alternative consiste à ne pas l'utiliser, car xss_clean effectue la désinfection et non la validation . xss_clean fait partie de Security Helper. Si vous avez besoin de le faire, vous le faites après validation.

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

De plus, vous pouvez activer le filtrage global xss dans le fichier config.php

$config['global_xss_filtering'] = TRUE;

12
Gaurav Bhatra

D'autres y ont fait allusion, mais personne n'a dit succinctement. Pour corriger cette erreur, supprimez xxs_clean de votre règle de validation. Je viens de découvrir ce problème moi-même et, grâce aux conseils fournis ici, j'ai pu résoudre le problème.

Ce:

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

Devient ceci:

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

Veuillez charger security Helper sur autoload.php

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

Pas besoin de faire autre chose.

5
Kamlesh

Tu devrais utiliser.

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

Vous pouvez aussi utiliser le code ci-dessous dans config/autoload.php, mais je préfère utiliser celui ci-dessus. Depuis, il garde le poids léger Codeigniter. 

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

Global outrepasser la règle serait la développer avec un message personnalisé de la manière suivante:

$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