Php 用于配置文件中表单验证的回调函数

Php 用于配置文件中表单验证的回调函数,php,codeigniter,validation,email-validation,Php,Codeigniter,Validation,Email Validation,我正在尝试进行电子邮件验证,其中电子邮件的域为@abc123.com。我已将表单验证规则分离到名为form\u validation.php的application/config文件夹中的另一个文件中。我的一个规则是回拨邮件检查 function email_check($email) { if( strpos($email, '@abc123.com') !== FALSE ) return TRUE; $this->form_validation->set_me

我正在尝试进行电子邮件验证,其中电子邮件的域为
@abc123.com
。我已将表单验证规则分离到名为
form\u validation.php
application/config
文件夹中的另一个文件中。我的一个规则是回拨邮件检查

function email_check($email)
{
    if( strpos($email, '@abc123.com') !== FALSE ) return TRUE;

    $this->form_validation->set_message('email', 'Please use abc123 email only.');

    return FALSE;
}
我应该把函数放在哪里?在主控制器中,或者与
form_validation.php
文件一起,我的所有表单验证规则都在哪里?我尝试了两个选项,但在显示错误消息的地方,我得到的输出是
无法访问与您的域名电子邮件对应的错误消息。(Email\u check)

form_validation.php

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

/* Form Validation Rules */

$config = array(
    'login' => array(
            array(
                    'field' => 'user_id',
                    'label' => 'User ID',
                    'rules' => 'trim|required'
            ),
            array(
                    'field' => 'password',
                    'label' => 'Password',
                    'rules' => 'trim|required'
            )
    ),
    'sign_up' => array(
            array(
                    'field' => 'user_id',
                    'label' => 'User ID',
                    'rules' => 'trim|required'
            ),
            array(
                    'field' => 'name',
                    'label' => 'Name',
                    'rules' => 'trim|required'
            ),
            array(
                    'field' => 'email',
                    'label' => 'Email',
                    'rules' => 'trim|required|valid_email|callback_email_check'
            ),
            array(
                    'field' => 'department',
                    'label' => 'Department',
                    'rules' => 'trim|required'
            ),
            array(
                    'field' => 'password',
                    'label' => 'Password',
                    'rules' => 'trim|required'
            ),
            array(
                    'field' => 'cfm_password',
                    'label' => 'Re-type Password',
                    'rules' => 'trim|required|matches[password]'
            )
    ),
    'edit_profile' => array(
            array(
                    'field' => 'new_password',
                    'label' => 'New Password',
                    'rules' => 'trim|required'
            ),
            array(
                    'field' => 'retype_password',
                    'label' => 'Re-type Password',
                    'rules' => 'trim|required|matches[new_password]'
            )
    ),
    'forgot_password' => array(
            array(
                    'field' => 'user_id',
                    'label' => 'User ID',
                    'rules' => 'trim|required'
            ),
            array(
                    'field' => 'email',
                    'label' => 'Email',
                    'rules' => 'trim|required|valid_email|callback_email_check'
            )
    )
);
?>

在功能电子邮件检查中,设置消息不正确,应与功能名称相同

改变这个

$this->form_validation->set_message('email', 'Please use abc123 email only.');


回电话

我也面临同样的问题,这就是我解决问题的方法

您可以在同一控制器中设置电子邮件检查功能。如果在回调中没有收到错误消息,请在运行()中传递$this

如果($this->form_validation->run($this)){…}

以及将控制器方法与规则组关联-

$config=array( “控制器/方法”=>数组(…)

查看更多链接:[将控制器方法与规则组关联][1]


干杯

只需在配置中添加这一行:

array(
      'field' => 'email',
      'label' => 'Email',
      'rules' => 'trim|required|valid_email|callback_email_check',
       **'errors' => array('email_check' => 'Your Error Message')**
),

回调函数被放置在表单验证中调用它们的同一控制器中。@AnmolRaghuvanshi我已经尝试过了,但它返回了相同的错误。是否发布您的set_规则部分also@AnmolRaghuvanshi这样就可以忽略错误,我正在尝试设置一个规则,以确保用户只使用“@abc123.com”作为域。@AnmolRaghuvanshi已经尝试过了,就像我说的那样,它忽略了对域的检查,因为它总是
TRUE
。我假设它是名称,这是错误的。谢谢。不工作,收到同样的错误任何建议@Wolfgang1983
array(
      'field' => 'email',
      'label' => 'Email',
      'rules' => 'trim|required|valid_email|callback_email_check',
       **'errors' => array('email_check' => 'Your Error Message')**
),