我有一个功能,可以让您更新您的信息,如电子邮件和用户名。电子邮件字段具有验证is_unique[table.email]
。当我们说用户不想更改电子邮件,而只是国家或其他信息时,is_unique将显示该消息。但是如果我在更新页面中删除它,用户可能会放置一个已存在于数据库中的电子邮件地址。
解决此问题的最佳逻辑方法是什么?
答案 0 :(得分:2)
将提交的电子邮件与数据库中的电子邮件进行比较。如果不同则使用电子邮件验证。如果没有,请不要。
答案 1 :(得分:2)
假设您正在使用数据库查询并计算它返回的行数(0表示该地址是免费的),您将要传递用户的唯一ID:
$result = $this->db->where('email_address',$email)->where('id !=',$userid)->get('users')->num_rows();
我刚才做的是检查当前用户以外的其他人是否使用所请求的电子邮件进行了注册。如果该用户想要更新他/她的国家/地区,则不会触发错误。
编辑:这将在您的自定义表单验证规则__unique_email()或类似内容中。哪个需要在控制器中。
答案 2 :(得分:2)
This article涵盖了Form_validation
课程,以满足您的需求。
答案 3 :(得分:2)
您可以在表单中添加包含当前电子邮件地址值的隐藏字段,然后如果提交的值不同,则运行验证