web-dev-qa-db-ja.com

CodeIgniter-フィールド名Passwordに対応するエラーメッセージにアクセスできません(pword_check)

私はcodeIgniterの初心者で、最初から行き詰まっています。 HMVC拡張機能を使用していますが、検証中に次のエラーが発生します。

フィールド名パスワードに対応するエラーメッセージにアクセスできません。(pword_check)

どんな助けでも大歓迎です

コード:

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は、Codeingitore 3のフォーム検証の一部ではなくなりました

検証ルールから_xss_clean_を削除するだけです

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

本当にそのルールを適用する必要がある場合は、セキュリティヘルパーもロードする必要があります。これには、通常の関数としてxss_clean()が含まれているため、検証ルールとしても使用できます。

_application/config/autoload.php :_に移動

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

または、フォームの検証前

_$this->load->helper('security');
_
16
Saty

こんにちはみんな私はhmvc codeIgniterでcall_backsを操作するためのソリューションを見つけました。他の人のために解決策を投稿したいと思います。

ソリューション:

1。ライブラリフォルダーにMY_Form_validation.phpファイルを作成し、次のコードをそのフォルダーに貼り付けます。

_ if (!defined('BASEPATH')) exit('No direct script access allowed');
    class MY_Form_validation extends CI_Form_validation
    {

    function run($module = '', $group = '')
    {
       (is_object($module)) AND $this->CI = &$module;
        return parent::run($group);
    }
}
_
  1. そしてif ($this->form_validation->run() == FALSE)if ($this->form_validation->run($this) == FALSE)に変更します。
14
Shivam Gupta
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;
    }
}

//うまく機能している

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

2
Bang Andre

今後の検索用。このエラーが表示されたときに確認する必要がある2つの3事項があります。

  1. コールバック関数の名前が

    $ 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;
      }                                                                              
    }
    

    *公開関数pword_check($ str){

    * set_message( 'pword_check'、 '%sフィールド...

  2. Codeigniter 2.Xではこれを行うことができます

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

    3.xでは次のようになります

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

    そして、この2行のコードを__construct()に追加する必要があります

    function __construct(){                                     
      parent::__construct();                                                      
      $this->load->library('form_validation');
      $this->form_validation->CI =& $this;                                           
    } 
    
  3. このファイルをapplication/libraries /MY_Form_validation.phpに追加します

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

乾杯! 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

参考のために。

0
Jomar Gregorio

このエラーの理由は、セキュリティヘルパーをロードしなかったためです。次に、configフォルダーのautoload.phpでセキュリティヘルパーを有効にする方法、またはこの投稿の最後の行で述べたようにヘルパーを直接ロードする方法を示します。

そして、すべてにもかかわらず、本当にそれが必要な場合は、application/config/autoload.phpに移動します。

$ autoload ['helper'] = array( 'security');または、フォーム検証の前に$ this-> load-> helper( 'security');

0