【问题标题】:Check Username or Password Availability Using AJAX on Codeigniter在 Codeigniter 上使用 AJAX 检查用户名或密码的可用性
【发布时间】:2014-08-28 20:55:18
【问题描述】:

伙计们,我在使用 AJAX 验证用户名的可用性时遇到了一些问题,这是我在 codeigniter 中的代码:

查看 一种。表格

<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;}

控制器

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>';
    }

问题在于表单始终显示用户名可用。 请帮忙.. :)

【问题讨论】:

    标签: php jquery ajax codeigniter


    【解决方案1】:

    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 对吗?

    【讨论】:

      【解决方案2】:

      你从 jQuery 传递了 username 与 username: $('#userId').val() 而不是 userId

      尝试使用$this-&gt;input-&gt;post('username')关注

      $username = strtolower(trim($this->input->post('username')));
      

      或者将发布的数据索引从 jQuery:username 更改为 userId

      userId: $('#userId').val()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-24
        • 2010-10-09
        • 2014-04-27
        • 1970-01-01
        相关资源
        最近更新 更多