我非常接近放弃 Code Igniter 中的本机表单验证错误功能,因为我很难让它们正常工作。我的逻辑看起来像一个箭头,但是错误构成的行为确实让我陷入了基于我的逻辑的循环。
所以这里列出了正在发生的事情。
*当我在未填写任何字段的情况下提交表单时 = 无效的电子邮件和密码错误应该构成
*当我输入正确的电子邮件并将密码字段留空时=正确的无效密码错误构成,因为它应该
*当我输入正确的电子邮件和错误的密码时=页面加载为白色
*当我只输入密码字段=无效的电子邮件出现
*当我输入乱码电子邮件并将密码留空=无效电子邮件出现
有许多假罩组合正在发生。
如果正在输入的电子邮件在数据库中不存在,我还想让这些电子邮件在它识别的位置上是唯一的。
我已经被困在这个问题上太久了,真的需要一些帮助。我是代码点火器的新手,我真的很困惑为什么会发生这种情况。任何帮助是极大的赞赏。
这是我的代码:
形式:
<?php
echo form_open('auth/validate_credentials_login');
echo "<span class='errors_login'>";
echo form_error('email_login');
echo "</span>";
echo form_label('', 'Email', 'email_login');
$data = array( 'name' => 'email_login', 'class' => 'input', 'placeholder' => 'Email');
echo form_input($data, set_value('email_login'));
echo "<span class='errors_login'>";
echo form_error('password_login');
echo "</span>";
echo form_label('', 'Password;', 'password_login');
$data = array( 'name' => 'password_login', 'class' => 'input', 'placeholder' => 'Password');
echo form_password($data, set_value('sha1(password_login)'));
echo form_submit('submit_login', 'Login');
echo form_close();
?>
控制器:
function validate_credentials_login()
{
$this->load->library('session');
$this->load->helper(array('form','url'));
$this->load->model('user_model', 'um');
$this->load->library('encrypt');
$this->load->library('form_validation');
$this->form_validation->set_rules('email_login', 'Email', 'required');
$this->form_validation->set_rules('password_login', 'Password', 'required');
$login = $this->input->post('submit_login');
if($login) {
if($this->form_validation->run() == FALSE)
{
$data['main_content'] = 'home/home_page';
$this->load->view('includes/templates/home_page_template', $data);
}
else
{
$user = $this->um->validate_home_login(array('email' => $this->input->post('email_login')));
if($user->password == $this->encrypt->sha1( $user->salt . $this->encrypt->sha1($this->input->post('password_login')))) {
$this->session->set_userdata(array(
'email' => $this->input->post('email_login')
));
redirect('account/edit');
exit;
}
}
}
}
提前致谢!