gpt4 book ai didi

php - 简单的 Codeigniter 表单验证

转载 作者:可可西里 更新时间:2023-11-01 00:48:26 25 4
gpt4 key购买 nike

我的登录表单有这样的问题

enter image description here

我想在每个字段旁边显示一个单独的错误

这是 Controller

function index()
{
$this->form_validation->set_rules('username','Username','trim|required|exact_length[4]|xss_clean');
$this->form_validation->set_rules('password','Password','trim|required|min_length[4]|max_length[40]|xss_clean|callback_login');
$this->form_validation->set_rules('jabatan','Jabatan','trim|required|xss_clean');

if($this->form_validation->run() == false)
{
$this->load->view('login');
}
else
{
$this->load->view('welcome_message');
}

}

function login()
{
$username = $this->input->post('username');
$password = $this->input->post('password');
$jabatan = $this->input->post('jabatan');

$value = $this->m_login->login($username,$password,$jabatan);

if($value)
{
return true;
}
else
{
$this->form_validation->set_message('login', 'password salah');
//delete redirect() and showing blank white screen
return false;

}

我制作了 <?php echo form_error(); ?>在每个字段旁边

<?php echo form_open('c_login/login'); ?>
<table>
<tr>
<td>Username</td>
<td><?php $inusername=array('name' => 'username', 'class' => 'GUI'); echo form_input($inusername); ?></td>
<td class="error"><?php echo form_error('username'); ?></td>
</tr>

<tr>
<td>Password</td>
<td><?php $inpassword=array('name' => 'password', 'class' => 'GUI', 'type' =>'password'); echo form_input($inpassword); ?></td>
<td class="error"><?php echo form_error('password'); echo $this->session->flashdata('login'); ?></td>
</tr>

<tr>
<td>Jabatan</td>
<td><?php $injabatan=array('keuangan' => 'keuangan', 'admin' => 'admin', 'hd' => 'head divisi', 'direktur' => 'direktur'); echo form_dropdown('jabatan',$injabatan,'keuangan','class = "gui"'); ?></td>
<td class="error"><?php echo form_error('jabatan'); ?></td>
</tr>

<tr>
<td></td>
<td><?php $insubmit=array('name' =>'login','class' =>'button','value' => 'Login'); echo form_submit($insubmit); echo nbs(); $inreset=array('name' =>'reset','class' =>'button','value' => 'Hapus'); echo form_reset($inreset); ?></td>
<td class="error"><?php echo form_error(); ?></td>
</tr>
</table>
<?php echo form_close(); ?>

form_error()怎么来的?功能不是echo当我使用 username 单击登录时正在执行任何操作和 password字段留空?

最佳答案

您知道验证中的问题您正在检查类的索引方法中的验证,而不是类的登录方法中的验证,并且在您的表单中,您已经对 ci_login/login 方法进行了操作,如果登录失败,该方法将重定向并清除表单验证也在登录方法上验证您的字段,并将所有错误消息放入 session 并显示,我已经对脚本进行了一些更改,请查看此链接上的此处 Code modified

对于这个改变你必须使用 url helper

function index()
{
$this->form_validation->set_rules('username','Username','trim|required|exact_length[4]|xss_clean');
$this->form_validation->set_rules('password','Password','trim|required|min_length[4]|max_length[40]|xss_clean|callback_login');
$this->form_validation->set_rules('jabatan','Jabatan','trim|required|xss_clean');

if($this->form_validation->run() == false)
{
$this->load->view('login');
}
else
{
//to check if the validation run correctly
//$this->load->view('welcome_message');

$username = $this->input->post('username');
$password = $this->input->post('password');
$jabatan = $this->input->post('jabatan');

$value = $this->m_login->login($username,$password,$jabatan);

if($value)
{
redirect('welcome_message');
//return true;
}
else
{
$this->form_validation->set_message('login', 'password salah');
redirect('c_login',$login); //i want to pass $login into login form, then print
return false; //them as a form_error

}
}

}


<?php echo form_open(uri_string()); ?>
<table>
<tr>
<td>Username</td>
<td><?php $inusername=array('name' => 'username', 'class' => 'GUI'); echo form_input($inusername); ?></td>
<td class="error"><?php echo form_error('username'); ?></td>
</tr>

<tr>
<td>Password</td>
<td><?php $inpassword=array('name' => 'password', 'class' => 'GUI', 'type' =>'password'); echo form_input($inpassword); ?></td>
<td class="error"><?php echo form_error('password'); echo $this->session->flashdata('login'); ?></td>
</tr>

<tr>
<td>Jabatan</td>
<td><?php $injabatan=array('keuangan' => 'keuangan', 'admin' => 'admin', 'hd' => 'head divisi', 'direktur' => 'direktur'); echo form_dropdown('jabatan',$injabatan,'keuangan','class = "gui"'); ?></td>
<td class="error"><?php echo form_error('jabatan'); ?></td>
</tr>

<tr>
<td></td>
<td><?php $insubmit=array('name' =>'login','class' =>'button','value' => 'Login'); echo form_submit($insubmit); echo nbs(); $inreset=array('name' =>'reset','class' =>'button','value' => 'Hapus'); echo form_reset($inreset); ?></td>
<td class="error"><?php echo form_error(); ?></td>
</tr>
</table>
<?php echo form_close(); ?>

关于php - 简单的 Codeigniter 表单验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12832491/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com