gpt4 book ai didi

php - 用户名或电子邮件存在时不返回错误

转载 作者:行者123 更新时间:2023-12-01 04:20:36 25 4
gpt4 key购买 nike

我试图弄清楚为什么当我的数据库中存在与我的用户名或电子邮件地址匹配的内容时它不报告验证错误。

它仍然将其显示为正确的后参数。当焦点离开时,它确实会执行两个不同的发布请求。

注册 Controller :

public function is_username_available()
{
if ($this->users_model->is_username_available($this->input->post('username')))
{
return false;
}
else
{
return true;
}
}

public function is_email_available()
{
if ($this->users_model->is_email_available($this->input->post('email_address')))
{
return false;
}
else
{
return true;
}
}

注册.js

rules: {
username: {
minlength: 6,
maxlength: 12,
remote: {
type: 'post',
url: 'register/is_username_available',
data: {
'username': function() { return $('#username').val(); }
},
dataType: 'json'
}
},
email_address: {
email: true,
remote: {
type: 'post',
url: 'register/is_email_available',
data: {
'email_address': function() { return $("#email_address").val(); }
},
dataType: 'json'
}
}

用户模型:

/**
* Check if username available for registering
*
* @param string
* @return bool
*/
function is_username_available($username)
{
$this->db->select('username', FALSE);
$this->db->where('LOWER(username)=', strtolower($username));

$query = $this->db->get($this->users_table);
echo $this->db->last_query();
return $query->num_rows() == 0;
}

/**
* Check if email available for registering
*
* @param string
* @return bool
*/
function is_email_available($email)
{
$this->db->select('email', FALSE);
$this->db->where('LOWER(email)=', strtolower($email));

$query = $this->db->get($this->users_table);
return $query->num_rows() == 0;
}

最佳答案

我认为ajax在服务器端不接受TRUE或FALSE,你应该发送一个字符串来告诉ajax你必须做什么。例如:

在模型中:

function is_username_available($username)
{
$this->db->select('username', FALSE);
$this->db->where('LOWER(username)=', strtolower($username));

$query = $this->db->get($this->users_table);

if($query->num_rows() > 0)
{
// no available
return FALSE;
}
else
{
// available
return TRUE;
}
}

在 Controller 中:

public function is_username_available()
{
if (!$this->users_model->is_username_available($this->input->post('username')))
{
// no available
exit('n');
}
else
{
// available
exit('y');
}
}

在你的 jquery 库中找到一个事件“success”,并询问如下内容:

success: function(data){ 

if(data == 'y')
{
alert('available');
}
else
{
alert('no available');
}
}

我认为验证插件的规则是一一起作用的。然后您可以根据第一次咨询发送多个答案,例如,第一条用户消息: exit ('user_y') exit ('user_n') 和电子邮件: exit ('email_y') exit ('email_n' )

在插件“成功”时,您将使用如下开关:

success: function(data){ 

switch(data)
{
case 'user_y':
alert('user_msg_yes');
break;
case 'user_n':
alert('user_msg_no');
break;
case 'email_y':
alert('email_msg_yes');
break;
case 'email_n':
alert('email_msg_no');
break;
}
}

关于php - 用户名或电子邮件存在时不返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11019061/

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