我是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;
}
}
答案 0 :(得分:16)
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');
答案 1 :(得分:14)
Hello Guys我找到了在hmvc codeIgniter中使用call_backs的解决方案。 我想为其他人发布解决方案。
<强>解决方案:强>
<强> 1。在libraries文件夹中创建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);
}
}
的
if ($this->form_validation->run() == FALSE)
更改为if ($this->form_validation->run($this) == FALSE)
,这就是所有人.. 答案 2 :(得分:1)
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;
}
}
//运作良好
答案 3 :(得分:0)
The reason for this error is you didn't loaded the security helper the following is the way enable security helper with autoload.php in config folder or you can directly load the helper as mentioned last line of this post
And if, despite everything, you really need it, go to application/config/autoload.php :
$autoload['helper'] = array('security'); Or, before your form validation $this->load->helper('security');
答案 4 :(得分:0)
将来的搜索。当此错误显示时,您需要检查两个 3 事项。
如果与
相同,请检查回调函数的名称$ this-&gt; form_validation-&gt; set_rules('pword','密码','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字段......
在codeigniter 2.X中你可以这样做
$ this-&gt; form_validation-&gt; run($ this)== TRUE
在3.x中应该是这样的
$ this-&gt; form_validation-&gt; run()== TRUE
你需要在__construct()
上添加这两行代码function __construct(){
parent::__construct();
$this->load->library('form_validation');
$this->form_validation->CI =& $this;
}
在您的应用程序/库/ MY_Form_validation.php
上添加此文件<?php
class MY_Form_validation extends CI_Form_validation{
public $CI;
}
https://www.youtube.com/watch?v=pp4Y_bIhASY&list=PLBEpR3pmwCayNcTCUWlUToK4qIQfFQCCm&index=8
供参考。
答案 5 :(得分:0)
在对文件application/config/autoload.php
进行助手安全检查之前
在库中添加form_validation
$autoload['libraries'] = array('form_validation');
别忘了增加安全性
$autoload['helper'] = array('security');
尝试