web-dev-qa-db-fra.com

CodeIgniter - Impossible d'accéder à un message d'erreur correspondant à votre nom de champ Mot de passe. (Pword_check)

Je suis un nouveau codeIgniter et je viens de me coincer au tout début. J'utilise l'extension HMVC et lors de la validation, j'obtiens l'erreur suivante:

Impossible d'accéder à un message d'erreur correspondant à votre nom de champ Mot de passe. (Pword_check)  

toute aide serait grandement appréciée

Code:

public function submit()
{


    $this->load->library('form_validation');

    $this->form_validation->set_rules('username', 'Username', 'required|max_length[30]|xss_clean');
    $this->form_validation->set_rules('pword', 'Password', 'required|max_length[30]|callback_pword_check|xss_clean');

    if ($this->form_validation->run() == FALSE)
    {
        $this->login();
    }
    else
    {
        echo 'Success'; die();
    }
}

public function pword_check($str)
{

    if ($str == 'test')
    {
        $this->form_validation->set_message('pword_check', 'The %s field can not be the Word "test"');
        return FALSE;
    }
    else
    {
        return TRUE;
    }
}
8
Shivam Gupta

xss_clean ne fait plus partie de la validation de formulaire dans Codeingitore 3

Il suffit de supprimer xss_clean de votre validation au roul

$this->form_validation->set_rules('pword', 'Password', 'required|max_length[30]|callback_pword_check');

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

aller à application/config/autoload.php :

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

Ou, avant la validation de votre formulaire

$this->load->helper('security');
16
Saty
public function pword_check($str)
{

    if ($str == 'test')
    {
        $this->form_validation->set_message(  __FUNCTION__ , 'The %s field can not be the Word "test"');
        return FALSE;
    }
    else
    {
        return TRUE;
    }
}

// ça marche bien

https://github.com/bcit-ci/CodeIgniter/issues/3908

1
Bang Andre

Pour les recherches futures. Il y a deux 3 choses à vérifier lorsque cette erreur s'affiche.

  1. Vérifiez le nom de la fonction de rappel si elle est identique à celle du 

    $ this-> form_validation-> set_rules ('pword', 'Password', 'required | max_length [30] | callback _pword_check

    public function pword_check($str){                                              
      if ($str == 'test'){
        $this->form_validation->set_message('pword_check', 'The %s field can not be the Word "test"');
        return FALSE;
      }
      else{
        return TRUE;
      }                                                                              
    }
    

    * fonction publique pword_check ($ str) {

    * set_message ('pword_check', 'Le champ% s ...

  2. Dans codeigniter 2.X vous pouvez le faire 

    $ this-> form_validation-> run ($ this) == TRUE

    Dans 3.x cela devrait être comme ça

    $ this-> form_validation-> run () == TRUE

    et vous devez ajouter ces deux lignes de codes sur __construct ()

    function __construct(){                                     
      parent::__construct();                                                      
      $this->load->library('form_validation');
      $this->form_validation->CI =& $this;                                           
    } 
    
  3. Ajoutez ce fichier sur votre application/libraries/MY_Form_validation.php

    <?php                                                                
    class MY_Form_validation extends CI_Form_validation{                                     
        public $CI;                                                                                               
    } 
    

À votre santé! Voir https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc/src/f77a3fc9a6fd?at=codeigniter-3.x

https://www.youtube.com/watch?v=pp4Y_bIhASY&list=PLBEpR3pmwCayNcTCUWlUToK4qIQfFQCCm&index=8

Pour référence.

0
Jomar Gregorio

La raison de cette erreur estvous n’avez pas chargé l’assistant de sécurité, voici comment activer l’assistant de sécurité Avec autoload.php dans le dossier de configuration ou vous pouvez directement charger l’aide comme indiqué à la dernière ligne de ce message.

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

$ autoload ['helper'] = array ('sécurité'); Ou, avant la validation de votre formulaire $ this-> load-> helper ('sécurité');

0
Roberto D. Garcia