codeigniter-3 - 如何纠正validation_errors();密码字段中的函数错误消息?
问题描述
我正在学习codeigniter 3(学习Edwin Diaz 的 CI 课程,我正在编写登录系统。我有两个控制器方法,称为index和login。我为此使用form_validation 库。但我的问题在于在密码字段中显示错误消息。它总是显示错误消息**密码字段是必需的。**即使我提交密码。我粘贴下面的代码:
public function login(){
$this->form_validation->set_rules('name','Username','trim|required|min_length[3]');
$this->form_validation->set_rules('password','Password','trim|required|min_length[3]');
if($this->form_validation->run() == FALSE){
$data = array('errors'=> validation_errors() );
$this->session->set_flashdata($data);
redirect('home/index');
}
else{
}
这是login_view.php代码
<h1>Login Form</h1>
<?php $attributes= array('id' =>'login_form' ,'class'=>'form-horizontal' ); ?>
<?php if($this->session->flashdata('errors'):?>
<?php echo $this->session->flashdata('errors');?>
<?php endif; ?>
<?php echo form_open('home/login',$attributes);?>
<?php echo form_label("Username") ;?>
<div class="form-group">
<?php $data = array('class'=>'form-control','name'=>'name','placeholder'=>'enter username');?>
<?php echo form_input($data); ?>
</div>
<?php echo form_label("Password") ;?>
<div class="form-group">
<?php $data = array('class'=>'form-control','password'=>'password','placeholder'=>'enter password');?>
<?php echo form_password($data); ?>
</div>
<?php
$data = array('class'=>'btn btn-primary','name'=>'submit','value'=>'login');?>
<?php echo form_submit($data); ?>
<?php echo form_close(); ?>
谁能说出为什么密码字段会这样做以及如何纠正这个问题?
PS:很多人说 codeigniter 3 不支持 php 7.3.12 版,而相同的代码在 php 7.2.5 版上完美运行
解决方案
看起来您还没有为密码输入设置名称。
提示:通过您的网络浏览器查看您的 HTML 源代码以查看生成的内容。这总是给你一个很好的线索,知道什么是不工作的。
所以你需要'password'=> 'password'
改为'name'=>'password
你原来的线
<?php $data = array('class'=>'form-control','password'=>'password','placeholder'=>'enter password');?>
应该成为
<?php $data = array('class'=>'form-control','name'=>'password','placeholder'=>'enter password');?>
推荐阅读
- python - 在 Python Pandas 中聚合数据
- linux - Linux - 在脚本外壳中传递密码
- c# - 在 ASP.NET Core Blazor 中使用 MongoDB 作为服务
- bash - 如何更改 shell 中的命令?
- android - 在 AOSP 源代码中添加系统应用程序(通过 App 源代码/工作 AS 项目)
- c++ - 链接到静态库中的 explicit_bzero (glibc)
- vhdl - Vivado 在综合过程中完全消除了设计 - 可能存在约束问题
- javascript - ExtJS7:查询参数不匹配的路由
- html - 使 div 处于活动状态而不单击其中的某个位置
- html - 视差效果不适用于小型设备