使用ajax php检查用户名是否存在的问题

时间:2015-12-24 13:03:15

标签: php ajax validation escaping sanitization

我对下面的代码有疑问和问题。

  1. 如果数据库中已存在用户名,则以下代码会执行实时检查。现在,当我手动输入用户名时,一切正常,但是在给出实际成功或错误消息的情况下,但是在输入1或2个字符后,我从浏览器给出的自动填充选项中选择用户名它没有给出任何成功或错误消息而是继续显示输入3到11个字符,这是用户名要求的初始消息。当从自动填充选项中选择用户名时,无法弄清楚它为什么不起作用。
  2. 的index.php

    <script type="text/javascript">
    $(document).ready(function(){
    $('#un').keyup(function(){
        var username = $(this).val();
        var Result = $('#result'); 
        if(username.length > 2 || username.length > 11) { // if greater than 2 (minimum 3)
            Result.html('./img/loadgreen.gif');
            var dataPass = 'action=availability&username='+username;
            $.ajax({ // Send the username val to available.php
            type : 'POST',
            data : dataPass,
            url  : 'available.php',
            success: function(responseText){ // Get the result
                if(responseText == 0){
                    Result.html('<span class="success">Available</span>');
                }
                else if(responseText > 0){
                    Result.html('<span class="error">Unavailable</span>');
                }
                else{
                    alert('Problem with sql query');
                }
            }
            });
        }else{
            Result.html('Enter 3 to 11 characters');
        }
        if(username.length == 0) {
            Result.html('');
        }
     });
    });
    </script>
    
    <table>
    <tr>
    <td>
    <input type="text" name="username" id="un"  placeholder="Username" class="username" />
    </td>
    <td class="result" id="result"></td>
    </tr>
    </table>
    

    available.php

    <?php
    include ( "./inc/connect.php" );
    if(isset($_POST['action']) && $_POST['action'] == 'availability')
    {
       $username = $_POST['username'];
       $que=$db->prepare("SELECT username FROM users WHERE username=:username");
       $que->execute(array(':username'=>$username));
       $count = $que->rowCount();
       echo $count;
    }
    ?>
    
    1. 现在我的问题是如何保护POST available.php许多人告诉您需要清理或转义每个POSTGET数据。那么最适合PDO的是什么。还听说逃避不能与PDO合作可能是我错了吗?

1 个答案:

答案 0 :(得分:1)

  1. 尝试jquery .change()而不是.keyup()