Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CodeIgniter中的验证规则_Codeigniter_Codeigniter 2 - Fatal编程技术网

CodeIgniter中的验证规则

CodeIgniter中的验证规则,codeigniter,codeigniter-2,Codeigniter,Codeigniter 2,我正在尝试使用CodeIgniter的form_验证库验证电子邮件和密码。但当我键入错误的电子邮件或密码时,验证规则的错误消息不会显示 控制员: public function anuncios() { $usr=$this->input->post('Usuario'); $this->input->post('Contrasenya'); $this->form_validation->set_rules('drcorreo',

我正在尝试使用CodeIgniter的form_验证库验证电子邮件和密码。但当我键入错误的电子邮件或密码时,验证规则的错误消息不会显示

控制员:

public function anuncios() 
{
    $usr=$this->input->post('Usuario');
    $this->input->post('Contrasenya');

    $this->form_validation->set_rules('drcorreo','Nombre de usuario',
            'trim|required|min_length[5]|xss_clean');
     $this->form_validation->set_rules('contrasena','Contraseña',
     'trim|required|min_length[8]|md5|xss_clean');

    if($this->form_validation->run()) 
     {
        $this->load->model('modelo_usuarios');

        if($this->modelo_usuarios->puede_entrar()) 
         {
            echo "Credenciales correctos";
            $this->load->model("modelo_bd");
            $data['vanc']=$this->modelo_bd->datos();
            $this->load->view('vancios',$data);

            return true;
         }
        else { //this one is never displayed

                                    echo "Credenciales incorrectos";
                echo "Usuario o contrasenya incorrectos<br /><br />";
                $this->load->view('indice');

                return false;
             }
     }  
    else { //this one is displayed but not the rules specified in 
                   //form_validation_lang.php file

            echo "Las reglas no son validas";
            $this->load->view('indice');
         }

}
anuncios()公共功能
{
$usr=$this->input->post('Usuario');
$this->input->post('Contrasenya');
$this->form_validation->set_rules('drcorreo','Nombre de usuario',
“修剪|要求|最小长度[5]| xss|U清洁”);
$this->form\u validation->set\u rules('contrasena','Contraseñ;a',
“修剪|所需|最小长度[8]| md5 | xss|U清洁”);
如果($this->form\u validation->run())
{
$this->load->model('modelo_usuarios');
如果($this->modelo\u usuarios->puede\u entra())
{
echo“Credenciales correctoros”;
$this->load->model(“modelo_bd”);
$data['vanc']=$this->modelo_bd->datos();
$this->load->view('vancios',$data);
返回true;
}
否则{//将永远不会显示此项
回声“不正确的Credenciales”;
回音“通常情况下,不正确的情况下,

”; $this->load->view('indice'); 返回false; } } else{//将显示此规则,但不显示中指定的规则 //form_validation_lang.php文件 回音“Las reglas没有儿子validas”; $this->load->view('indice'); } }
视图:


迪雷奇和奥卡蒂;科雷奥酒店


Contraseñ;A.

为什么不显示错误消息

谢谢。

规则通过后,“无法进入”消息会传回。当表单验证为true时,它位于if语句中

如果希望显示此消息,请将消息加载到视图中,或将其设置为闪存数据

为什么不将puede_entar()模型调用放入自定义回调表单验证规则中,然后将其添加到已设置的规则中呢

查找有关自定义回调的信息

这是我将如何编码您的控制器

<?php

class Foo extends CI_Controller {
    public function anuncios() {
    // xxs_clean set globally in config
        $this->form_validation->set_rules('drcorreo','Nombre de usuario', 'trim|required|min_length[5]|callback_puede_entrar');
        // should use sha1 at least for hashing, see http://www.freerainbowtables.com/tables/
        $this->form_validation->set_rules('contrasena','Contrase&ntilde;a', 'trim|required|min_length[8]|md5');

        if($this->form_validation->run()) {
            $this->load->model('modelo_bd');
            $data['vanc']=$this->modelo_bd->datos();
            $this->load->view('vancios',$data);
        } else { 
            // redisplay form with validation errors
            $this->load->view('indice');
        }
    }

    public function puede_entrar($val) {
        $this->load->model('modelo_usuarios');

        if($this->modelo_usuarios->puede_entrar()) {
            return TRUE;
        } else {
            $this->form_validation->set_message('puede_entrar', 'Las reglas no son validas.');
            return FALSE;
        }
    }
}
我假设您在autoload.php文件中调用“form”helper

像这样使用你的观点

<div class="errors"><?php echo validation_errors(); ?></div>
<div id="acformulario"> 
    <form action="http://localhost/Pruebas/index.php/cindice/anuncios" method="post">
        <label for="correo" id="dcorreo">Direcci&oacute;n de correo</label>
        <input type="text" name="drcorreo" id="dcc"/><br /><br />
        <label for="contrasenya" id="cont">Contrase&ntilde;a</label>
        <input type="password" name="contrasena" id="cmcont"/><br /><br />
        <!--<label for="enviar"></label>-->
        <input type="submit" name="envia" id="bentrar" value="Entrar" />    
    </form>
</div>

迪雷奇和奥卡蒂;科雷奥酒店


Contraseñ;A.


这里的重点是“validation\u errors()”函数。

是。但问题是,当我介绍了一个错误的电子邮件,它应该显示类似的电子邮件字段必须包含一个有效的电子邮件地址。我显示消息Las reglas no son validas。将电子邮件规则设置为$this->form_validation->set_rules('drcorreo','Nombre de usuario','trim | required | min|u length[5]| xss|u clean | callback u|puede|entar');那么您将有单独的错误消息。另外,为什么不将您的配置(关于第323行)更改为xss_clean,而不是将其添加到每个规则中呢?将其更改为$config['global_xss_filtering']=TRUE;对我在autoload.php中调用autoload helper。但是我输入了你告诉我的,但是结果是一样的。不会显示错误消息。
<div id="acformulario"> 
    <form action="http://localhost/Pruebas/index.php/cindice/anuncios" method="post">
        <?php echo form_error('drcorreo'); ?>
        <label for="correo" id="dcorreo">Direcci&oacute;n de correo</label>
        <input type="text" name="drcorreo" id="dcc"/><br /><br />
        <label for="contrasenya" id="cont">Contrase&ntilde;a</label>
        <?php echo form_error('contrasena'); ?>
        <input type="password" name="contrasena" id="cmcont"/><br /><br />
        <!--<label for="enviar"></label>-->
        <input type="submit" name="envia" id="bentrar" value="Entrar" />    
    </form>
</div> 
<div class="errors"><?php echo validation_errors(); ?></div>
<div id="acformulario"> 
    <form action="http://localhost/Pruebas/index.php/cindice/anuncios" method="post">
        <label for="correo" id="dcorreo">Direcci&oacute;n de correo</label>
        <input type="text" name="drcorreo" id="dcc"/><br /><br />
        <label for="contrasenya" id="cont">Contrase&ntilde;a</label>
        <input type="password" name="contrasena" id="cmcont"/><br /><br />
        <!--<label for="enviar"></label>-->
        <input type="submit" name="envia" id="bentrar" value="Entrar" />    
    </form>
</div>