【发布时间】:2016-03-30 22:12:37
【问题描述】:
我有一个问题和下面的代码的问题。
- 下面的代码会实时检查用户名是否已存在于数据库中。现在,当我手动输入用户名时,它可以很好地提供实时成功或错误消息,但在输入 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;
}
?>
- 现在我的问题是如何保护
POST上的available.php很多人告诉您需要清理或转义每个POST和GET数据。那么什么对 PDO 最有效。还听说转义不适用于 PDO 可能是我错了吗?
【问题讨论】:
标签: php ajax validation escaping sanitization