Php codeigniter中的表单验证是否唯一

Php codeigniter中的表单验证是否唯一,php,mysql,codeigniter,Php,Mysql,Codeigniter,我在CMS后端工作,我使用Codeigniter来帮助开发 因此,我正在处理一个用户表。例如,我允许后端管理员插入、更新用户信息 首先是一个用户表,每行有一个“编辑”按钮。单击“编辑”按钮后,会出现该特定用户的表单 e、 g 因为我需要确保用户名是唯一的,电子邮件是唯一的,所以我需要使用isUnique验证 但是,问题是,如何处理这种情况,“只有用户修改数据,然后添加is Unique规则”?因为如果我不更改用户名,那么我将通过原始名称进行检查,并且无法通过is Unique检查,谢谢 $thi

我在CMS后端工作,我使用Codeigniter来帮助开发

因此,我正在处理一个用户表。例如,我允许后端管理员插入、更新用户信息

首先是一个用户表,每行有一个“编辑”按钮。单击“编辑”按钮后,会出现该特定用户的表单

e、 g

因为我需要确保用户名是唯一的,电子邮件是唯一的,所以我需要使用isUnique验证

但是,问题是,如何处理这种情况,“只有用户修改数据,然后添加is Unique规则”?因为如果我不更改用户名,那么我将通过原始名称进行检查,并且无法通过is Unique检查,谢谢

$this->form_validation->set_rules('name', 'Username', 'trim|required|min_length[4]|is_unique[admin.username]');   

我不经常使用
codeigniter
,因此我不确定执行此操作的确切代码,但类似这样的代码如何:

$current_name = // current name in db

if ($this->input->post('name') != $current_name) {
    // Name has been changed. Do validation.
}

...

基本上,只需检查发布的名称是否与数据库中已有的名称不同。如果是,请运行验证并进行更新。如果是相同的,就忽略它。

我不太使用
codeigniter
,因此我不确定执行此操作的确切代码,但是类似这样的代码如何:

$current_name = // current name in db

if ($this->input->post('name') != $current_name) {
    // Name has been changed. Do validation.
}

...

基本上,只需检查发布的名称是否与数据库中已有的名称不同。如果是,请运行验证并进行更新。如果是相同的,就忽略它。

我不太使用
codeigniter
,因此我不确定执行此操作的确切代码,但是类似这样的代码如何:

$current_name = // current name in db

if ($this->input->post('name') != $current_name) {
    // Name has been changed. Do validation.
}

...

基本上,只需检查发布的名称是否与数据库中已有的名称不同。如果是,请运行验证并进行更新。如果是相同的,就忽略它。

我不太使用
codeigniter
,因此我不确定执行此操作的确切代码,但是类似这样的代码如何:

$current_name = // current name in db

if ($this->input->post('name') != $current_name) {
    // Name has been changed. Do validation.
}

...

基本上,只需检查发布的名称是否与数据库中已有的名称不同。如果是,请运行验证并进行更新。如果是相同的,则忽略它。

如果要更新用户ID,仍要将其发送到服务器,则可以运行查询以检查该用户名/用户ID组合是否存在。如果是,则表示该用户没有更改。如果没有,您需要进一步检查is_unique

如果坚持使用表单验证,那么最好在回调中实现

基本上,在控制器中,您将使用两个函数

function form_grabber()
{
//get your form and stuff. run this line : 
$this->form_validation->set_rules('name', 'Username', 'call_back_isUserNameNotChanged[userID]'); 
//assuming userID comes from the form aswell.
}

function isUserNameNotChanged($username,$userID)
{
//query DB, return true if match exists or false if it doesn't
}

无论如何,如果要将userID发送到服务器进行更新,可以运行查询来检查username/userID组合是否存在。如果是,则表示该用户没有更改。如果没有,您需要进一步检查is_unique

如果坚持使用表单验证,那么最好在回调中实现

基本上,在控制器中,您将使用两个函数

function form_grabber()
{
//get your form and stuff. run this line : 
$this->form_validation->set_rules('name', 'Username', 'call_back_isUserNameNotChanged[userID]'); 
//assuming userID comes from the form aswell.
}

function isUserNameNotChanged($username,$userID)
{
//query DB, return true if match exists or false if it doesn't
}

无论如何,如果要将userID发送到服务器进行更新,可以运行查询来检查username/userID组合是否存在。如果是,则表示该用户没有更改。如果没有,您需要进一步检查is_unique

如果坚持使用表单验证,那么最好在回调中实现

基本上,在控制器中,您将使用两个函数

function form_grabber()
{
//get your form and stuff. run this line : 
$this->form_validation->set_rules('name', 'Username', 'call_back_isUserNameNotChanged[userID]'); 
//assuming userID comes from the form aswell.
}

function isUserNameNotChanged($username,$userID)
{
//query DB, return true if match exists or false if it doesn't
}

无论如何,如果要将userID发送到服务器进行更新,可以运行查询来检查username/userID组合是否存在。如果是,则表示该用户没有更改。如果没有,您需要进一步检查is_unique

如果坚持使用表单验证,那么最好在回调中实现

基本上,在控制器中,您将使用两个函数

function form_grabber()
{
//get your form and stuff. run this line : 
$this->form_validation->set_rules('name', 'Username', 'call_back_isUserNameNotChanged[userID]'); 
//assuming userID comes from the form aswell.
}

function isUserNameNotChanged($username,$userID)
{
//query DB, return true if match exists or false if it doesn't
}

感谢您的帮助,我想知道这是标准的方法吗?因为检查更新数据是一种非常常见的操作,我怀疑它为什么会变得如此复杂。事实上,这并不是那么复杂,只是如果您不习惯进行表单验证的话,它似乎是如此。form_验证所做的只是运行一些函数来检查条件是否满足并返回true,您可以在表单验证之外运行此条件。老实说,我从来都不喜欢内置类:)我是否应该只在输入框顶部而不是在输入框内部显示旧数据,这样我就不会发布那些空字段,只检查编辑的字段。您可以始终将用户名存储在隐藏字段中,然后在服务器上检查隐藏字段是否与输入字段中的名称匹配。然而,这不是一种安全的方法,这些值可能被篡改。不管怎样,你都需要服务器端验证。谢谢你的帮助,我想知道这是不是标准的方法,因为检查更新数据是一种非常常见的操作,我怀疑为什么它会使它变得如此复杂。其实没有那么复杂,如果你不习惯形成验证,它看起来就是如此。form_验证所做的只是运行一些函数来检查条件是否满足并返回true,您可以在表单验证之外运行此条件。老实说,我从来都不喜欢内置类:)我是否应该只在输入框顶部而不是在输入框内部显示旧数据,这样我就不会发布那些空字段,只检查编辑的字段。您可以始终将用户名存储在隐藏字段中,然后在服务器上检查隐藏字段是否与输入字段中的名称匹配。然而,这不是一种安全的方法,这些值可能被篡改。不管怎样,你都需要服务器端验证。谢谢你的帮助,我想知道这是不是标准的方法,因为检查更新数据是一种非常常见的操作,我怀疑为什么它会使它变得如此复杂。其实没有那么复杂,如果你不习惯形成验证,它看起来就是如此。form_验证所做的只是运行一些函数来检查条件是否满足并返回true,您可以在表单验证之外运行此条件。老实说,我从来都不喜欢内置类:)我是否应该只在输入框顶部而不是在输入框内部显示旧数据,这样我就不会发布那些空字段,只检查编辑过的字段