gpt4 book ai didi

forms - CI - 忘记密码表单验证以检查数据库中是否存在电子邮件地址

转载 作者:行者123 更新时间:2023-12-04 05:49:02 24 4
gpt4 key购买 nike

我是 Codeigniter 的新手,需要设置表单验证规则和自定义验证消息,以检查以忘记密码表单提交的数据库中是否存在电子邮件地址。如果电子邮件地址存在,则发送电子邮件,如果不存在,则应重新加载表单,将字段值设置为用户输入的内容并提供电子邮件地址不存在的错误。

我在 Controller 中有以下内容...

public function forgot_password()
{
$this->form_validation->set_rules('email_address','Email Address','trim|required|valid_email');

if($this->form_validation->run() == FALSE)
{
$this->forgot_password_form();
}
else
{
$this->load->model('membership_model');
if($query = $this->membership_model->val_forgot_password())
{
$data['main_content'] = 'forgot_password_sent';
$this->load->view('includes/template', $data);
}
else
{
$this->form_validation->set_message('email_address','The email address you provided does not exist.');
$this->forgot_password_form();
}
}
}

并在模型中...
public function val_forgot_password()
{
$this->db->where('email_address', $this->input->post('email_address'));
$query = $this->db->get($this->members);

if($query->num_rows == 1)
{
return true;
}
else
{
return false;
}
}

表格是...
<?php

echo form_open('login/forgot_password');
echo "Email Address: " . form_input('email_address', set_value('email_address', ''));
echo br(2);
echo form_submit('submit','Send Email');
echo form_close();
echo br(1);

echo validation_errors('<p>Error: ');

?>

当表单使用有效的电子邮件地址提交时,它会正确转到成功页面,但如果电子邮件地址不存在,它似乎会重新加载表单但不会出错。

请帮助! :D

最佳答案

您应该使用回调来检查电子邮件是否存在。所以你的 Controller 会像......

public function forgot_password()
{
$this->form_validation->set_rules('email_address','Email Address','trim|required|valid_email|callback__check_email_exists');

if($this->form_validation->run() == FALSE)
{
// VALIDATION ERRORS, SHOW VIEWS
}
else
{
// ALL IS GOOD, UPDATE EMAIL, AND REDIRECT TO CURRENT URL
}
}

您的回调(仍在您的 Controller 中)将类似于...
public function _check_email_exists($email)
{
// LOAD AND USE YOUR MODEL TO CHECK EMAIL EXISTS HERE
if ( ! $email_exists )
{
$this->form_validation->set_message('email_address', 'That email address don\'t exist, sucka!');
return FALSE;
}
else
{
return TRUE;
}
}

所有这些都在此处的优秀 CI 文档中详细说明,如果您不熟悉 CI,我建议您遵守 CI 约定。

http://codeigniter.com/user_guide/libraries/form_validation.html

编辑:我在 codeigniter3 中执行此操作时还面临另一个问题。您必须将消息字段名称命名为回调。所以,而不是 $this->form_validation->set_message('email_address', 'That email address don\'t exist, sucka!');
这应该是
$this->form_validation->set_message('_check_email_exists', 'That email address don\'t exist, sucka!');

关于forms - CI - 忘记密码表单验证以检查数据库中是否存在电子邮件地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10322570/

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