检查用户名或密码可用性上笨
问题描述:
奥凯家伙使用AJAX,我使用AJAX来验证用户名的availiblity有一定的问题,这是我笨代码:检查用户名或密码可用性上笨
VIEW 一个。表格
<input type="text" class="form-control" placeholder="New Username" name="userId" id="userId" value="" onblur="return check_username();">
<div id="Info"></div></span><span id="Loading"><img src="<?php echo base_url(); ?>assets/img/loading.gif" alt="" /></span>
b。脚本
<script src="<?php echo base_url(); ?>assets/plugins/jquery-1.8.3.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#Loading').hide();
});
function check_username(){
var username = $("#userId").val();
if(username.length > 2){
$('#Loading').show();
$.post("<?php echo base_url(); ?>admin/check_username_availablity", {
username: $('#userId').val(),
}, function(response){
$('#Info').fadeOut();
$('#Loading').hide();
setTimeout("finishAjax('Info', '"+escape(response)+"')", 450);
});
return false;
}
}
function finishAjax(id, response){
$('#'+id).html(unescape(response));
$('#'+id).fadeIn(1000);
}
</script>
模态
public function check_username_availablity(){
$username = trim($this->input->post('userId'));
$username = strtolower($username);
$query = $this->db->query("SELECT * FROM table_user WHERE userId='$username'");
if($query->num_rows() > 0)
return false;
else
return true;}
CONTROLLERS
public function check_username_availablity(){
$this->load->model('m_admin');
$get_result = $this->m_admin->check_username_availablity();
if(!$get_result)
echo '<span style="color:#f00">Username already in use. </span>';
else
echo '<span style="color:#00c">Username Available</span>';
}
的问题是在形式总是表明用户名可用。 请帮忙.. :)
答
您从jQuery的传递username
与username: $('#userId').val()
没有userId
尝试从jQuery的与$this->input->post('username')
$username = strtolower(trim($this->input->post('username')));
或更改下列发布的数据指标:username
到userId
userId: $('#userId').val()
答
1:当我的用户名是''; DELETE FROM table_user;'“会发生什么?您的查询就会变成:
SELECT * FROM table_user WHERE userId = '';DELETE FROM table_user;''
所以我们进行了修复:(并请:阅读弹射手册)
$this->db->query('SELECT * FROM table_user WHERE userId = ?',array($username));
2:不要把业务逻辑模型:
function check_username_availability($username)
{
// also the name of this function could better describe what it does:
// is_username_available($username) for instance.
// ...
}
3:查询选择用户的输出是什么?你尝试调试什么?
die(var_dump($this->db->last_query()));
4:你一定要明白你正在检查用户ID针对用户NAME吧?