使用AJAX检查数据库中是否存在用户名
因此,基本上,我想在注册表格中添加一个功能,该功能将检查数据库中是否已存在该用户名。
我对AJAX有几个问题-
1)我想创建一个AJAX请求on_change函数,所以像这样-
$('#username').change(function() { $.ajax({
url: "validation.php"
});
});
因此,据我所知,我必须在validation.php文件中包含所有在PHP中进行的验证,对吗?是否需要任何特殊的验证,或者只是使用sql语句进行的简单验证-SELECT
* FROM 'users' WHERE 'username' = '. $_POST['username'];
2)据我所知,我也必须通过$ .ajax传递POST值,对吗?如果是,我将如何通过validation.php文件访问它们?
3)在validation.php文件中获得结果后,如何将它们传递回(true或false
–存在或不存在)?我需要将它们传递回去,然后进行if检查(如果为真)-显示用户名已存在的错误,否则,什么也不显示?
希望您了解我将要创造的东西。我知道互联网上有很多教程,但是我不喜欢通过教程来创建某些东西,因为如果我自己创建它,下次将更容易理解;)!
编辑:此外,我正在使用CodeIgniter框架创建我的网站,那么如何将ajax中的url属性传递给CodeIgniter模块?
回答:
在继续之前,SELECT * FROM 'users' WHERE 'username' = '.
$_POST['username'];只是向SQL注入提问。我建议您使用PHP数据对象-http://php.net/manual/zh/book.pdo.php。
因为这是一个简单的请求,所以建议您使用JQuery的method $.post()
。这是基于您要执行的操作的示例。
$.post('validation.php',{username: $('#username').val()}, function(data){ if(data.exists){
//tell user that the username already exists
}else{
//username doesn't exist, do what you need to do
}
}, 'JSON');
jQuery的post方法采用4个参数$.post(url, data, callback,
datatype)。在上面的示例中,我们将用户名与$('#username').val()
一起发布,validation.php
并期望得到JSON
响应。请求完成后,回调函数将作为data
请求的响应执行。因为我们指定该响应为JSON
,所以我们可以像访问javascript中的本机对象一样访问它。现在让我们转到validation.php
就像我上面所说的,我建议您将PDO用于数据库驱动程序。因此,在此示例中,我将向您展示其基本用法。
//set the headers to be a json stringheader('content-type: text/json');
//no need to continue if there is no value in the POST username
if(!isset($_POST['username']))
exit;
//initialize our PDO class. You will need to replace your database credentials respectively
$db = new PDO('mysql:host=DATABASE_HOST;dbname=DATABASE_NAME','DATABASE_USERNAME','DATABASE_PASSWORD',array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
//prepare our query.
$query = $db->prepare('SELECT * FROM users WHERE username = :name');
//let PDO bind the username into the query, and prevent any SQL injection attempts.
$query->bindParam(':name', $_POST['username']);
//execute the query
$query->execute();
//return the json object containing the result of if the username exists or not. The $.post in our jquery will access it.
echo json_encode(array('exists' => $query->rowCount() > 0));
现在回顾一下,我们的jQuery脚本将发布到validation.php
从数据库中选择用户名的位置。它将返回一个JSON
对象,该对象的键为exists
布尔值,指示用户名是否已存在于数据库中。通过jQuery完成请求后,您可以根据查询结果执行所需的操作。我希望这是一个详尽的解释,并引导您完成您希望完成的工作。
以上是 使用AJAX检查数据库中是否存在用户名 的全部内容, 来源链接: utcz.com/qa/423100.html