【问题标题】:Issues checking if username exists using ajax php使用ajax php检查用户名是否存在的问题
【发布时间】:2016-03-30 22:12:37
【问题描述】:

我有一个问题和下面的代码的问题。

  1. 下面的代码会实时检查用户名是否已存在于数据库中。现在,当我手动输入用户名时,它可以很好地提供实时成功或错误消息,但在输入 1 或 2 个字符后,我从浏览器提供的自动填充选项中选择用户名它没有给出任何成功或错误消息,而是保持显示 输入 3 到 11 个字符,这是用户名要求的初始消息。从自动填充选项中选择用户名时,无法弄清楚为什么它不起作用。

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 可能是我错了吗?

【问题讨论】:

标签: php ajax validation escaping sanitization


【解决方案1】:
  1. 尝试 jquery .change() 而不是 .keyup()

【讨论】:

    猜你喜欢
    • 2016-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-08
    • 1970-01-01
    • 1970-01-01
    • 2015-03-04
    • 1970-01-01
    相关资源
    最近更新 更多