gpt4 book ai didi

javascript - 使用 PHP CodeIgniter、JQuery、AJAX 验证数据库中是否已存在用户名

转载 作者:行者123 更新时间:2023-12-02 18:21:19 24 4
gpt4 key购买 nike

我试图在用户使用 Codeigniter 点击提交按钮之前首先检查用户名的有效性。用户名的状态(无论是否被占用)将显示在其旁边。

这是 View 中的 JS:

<script type="text/javascript" src="../assets/js/jquery.min.js"></script>
<script type="text/javascript"><!--
$(document).ready(function() {
$("#username").blur(function() {
//remove all the class add the messagebox classes and start fading
$("#msgbox").removeClass().addClass('messagebox').text('Checking...').fadeIn("slow");
//check the username exists or not from ajax


$.post("addpatient/check_user_availability",{ username:$(this).val() } ,function(data) {
if(data=='no') {
$("#msgbox").fadeTo(200,0.1,function() { //start fading the messagebox

//add message and change the class of the box and start fading
$(this).html('This User name Already exists').addClass('messageboxerror').fadeTo(900,1);
});

}
else {
$("#msgbox").fadeTo(200,0.1,function() { //start fading the messagebox

//add message and change the class of the box and start fading
$(this).html('Username available to register').addClass('messageboxok').fadeTo(900,1);
});
}
});

});

});
</script>


以下是 html 格式的表单的一部分:

<form method="post" action="addpatient/insert" name="register">
<table id='addpatient'>
<tr>
<td width=100> Username:
<td width=150> <input type='text' id='username' name='username' value="<?php if(isset($_POST['username'])) echo $_POST['username']; ?>" placeholder="5-15 char" pattern=".{5,15}" required>
<td> <span id="msgbox" style="display:none"></span>
<td><div id="msgbox"></div>
</tr>...


这是 Controller :

function check_user_availability()
{
$username = $this->input->post('username');

// Developed by Roshan Bhattarai
// Visit http://roshanbh.com.np for this script and more.
// This notice MUST stay intact for legal use


//this varible contains the array of existing users
$existing_users=$this->user->get_all_usernames();
//value got from the get metho
$user_name= $username;

//checking weather user exists or not in $existing_users array
if (in_array($user_name, $existing_users))
{
//user name is not availble
echo "no";
}
else
{
//user name is available
echo "yes";
}
}


这是模型中的一个函数:

function get_all_usernames() {
$this->db->select('username');
$this->db->from('users');
$query = $this->db->get();
return $query->result();
}



但是,当我运行它时,它总是说用户名可以进行注册,即使用户名已被占用。

另一个问题是,当用户“实时”输入他/她所需的用户名时,它不会检查用户名的有效性。我的意思是,在代码检查有效性之前,用户必须先单击下一个文本字段。

请帮我解决这些问题。谢谢!

最佳答案

试试这个:

function check_user_availability()
{
$username = $this->input->post('username');
$result = $this->user->get_all_usernames( $username ); #send the post variable to the model
//value got from the get metho
$user_name= $username;

if( $result ){
echo "no";
}else{
echo "yes";
}
}

function get_all_usernames( $username ) {
$this->db->select('username');
$this->db->where('username', $username)
$this->db->from('users', 1);
$query = $this->db->get();
if( $query->num_rows() > 0 ){
return 0;
}else{
return 1;
}
}

脚本中的更改:

$(document).ready(function() {
$("#username").keyup(function() {
//remove all the class add the messagebox classes and start fading
$("#msgbox").removeClass().addClass('messagebox').text('Checking...').fadeIn("slow");
//check the username exists or not from ajax

var name = $(this).val();
$.ajax({
url : "<?=base_url()?>addpatient/check_user_availability",
data : { username : name },
type : 'POST',
success : function(data){
if( data == '0' ){
$("#msgbox").fadeTo(200,0.1,function() { //start fading the messagebox

//add message and change the class of the box and start fading
$(this).html('This User name Already exists').addClass('messageboxerror').fadeTo(900,1);
});
}else if( data == '1' ){
$("#msgbox").fadeTo(200,0.1,function() { //start fading the messagebox

//add message and change the class of the box and start fading
$(this).html('Username available to register').addClass('messageboxok').fadeTo(900,1);
});
}else{
alert("Some error occured! Check Console");
}
}
});
});
});

关于javascript - 使用 PHP CodeIgniter、JQuery、AJAX 验证数据库中是否已存在用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18797548/

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