CodeIgniter中的验证规则
我正在尝试使用CodeIgniter的form_验证库验证电子邮件和密码。但当我键入错误的电子邮件或密码时,验证规则的错误消息不会显示 控制员: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',
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ñ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ón de correo</label>
<input type="text" name="drcorreo" id="dcc"/><br /><br />
<label for="contrasenya" id="cont">Contraseñ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ón de correo</label>
<input type="text" name="drcorreo" id="dcc"/><br /><br />
<label for="contrasenya" id="cont">Contraseñ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ón de correo</label>
<input type="text" name="drcorreo" id="dcc"/><br /><br />
<label for="contrasenya" id="cont">Contraseñ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>