php - Codeigniter 表单验证规则顺序
问题描述
我已经在控制器上设置了这个规则
public function checkLogin()
{
$this->load->helper('form');
$this->load->library('form_validation');
$this->form_validation->set_rules(
'username',
'nombre de usuario',
'required',
array('required' => 'Debes introducir un %s.')
);
$this->form_validation->set_rules(
'pass',
'contraseña',
'required',
array('required' => 'Debes introducir una %s.')
);
$this->form_validation->set_rules(
'bad_login',
'login',
'callback_checkCredentials'
);
if ($this->form_validation->run() == FALSE) {
$this->load->view('header');
$this->load->view('login/login_view');
$this->load->view('footer');
} else {
$this->session->set_userdata('logged',true);
$this->session->set_userdata('user',$this->input->post('username'));
redirect('main');
}
}
public function checkCredentials(){
if($this->input->post('username') == $this->user && $this->input->post('pass') == $this->pass){
return true;
}else{
$this->form_validation->set_message('checkCredentials', 'El usuario/contraseña introducido no es correcto');
return false;
}
}
和视图
<div class="container">
<div class="col-md-4">
<?php $this->load->helper('form'); ?>
<?php echo form_open('checkLogin'); ?>
<?php echo form_error('bad_login'); ?>
<?php echo form_error('username'); ?>
<div class="form-group">
<?php echo form_label('Usuario:'); ?>
<?php echo form_input(array('id' => 'username', 'name' => 'username', 'class'=>'form-control', 'placeholder'=>"Nombre de usuario")); ?>
</div>
<?php echo form_error('pass'); ?>
<div class="form-group">
<?php echo form_label('Contraseña:'); ?>
<?php echo form_password(array('id' => 'pass', 'name' => 'pass', 'class'=>'form-control', 'placeholder'=>"Contraseña")); ?>
</div>
<?php echo form_submit(array('id' => 'submit', 'value' => 'Enviar', 'class'=>'btn btn-primary')); ?>
<?php echo form_close(); ?>
</div>
</div>
这是一个登录表单,用户输入并输入密码,但如果密码或用户名为空,则无需检查密码和用户名是否正确(并显示消息错误),我不是确定该怎么做
解决方案
你可以简单地这样做:
$username = trim($this->input->post('usename'));
$password = trim($this->input->post('password'));
if(!empty($username) && !empty($password))
{
// do you validation
}
else
{
// maybe show error message
}
推荐阅读
- scala - 在 scala 2.13 中,为什么有时无法显式调用类型类?- 第2部分
- visual-c++ - 在 C++17 (CLion) 中使用 Gurobi -“找不到 Gurobi (missing_GUROBI_LIBRARY)”
- python - “选择器”对象不支持项目分配
- javascript - $w.at 事件处理程序在转发器上触发时递归运行。WIX / Corvid / Velo
- javascript - 有没有办法用 vue/nuxt 显式检测浏览器事件(控制台)?
- php - Sass 与 wordpress
- python-3.x - PIL异步保存图像?
- python - for 循环脚本仅在目录中的最后一个文件上完全执行
- java - 从 Intellij 和 Maven 运行 JavaFX 11 项目会产生不同的结果
- spring-security - 使用 Spring Security OAuth2 和 Okta 处理基于 url 的 RBAC