当前位置: 首页 > 面试题库 >

使用AJAX检查数据库中是否存在用户名

曾翰飞
2023-03-14
问题内容

因此,基本上,我想在注册表格中添加一个功能,该功能将检查数据库中是否已存在该用户名。

我对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。

因此,据我了解,我也必须通过$ .ajax传递POST值,对吗? 如果是,我将如何通过validation.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 string
header('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完成请求后,您可以根据查询结果执行所需的操作。我希望这是一个详尽的解释,并引导您完成您希望完成的工作。



 类似资料:
  • 我有麻烦让我的代码工作。当用户输入用户名时,它会检查数据库,看看它是否存在,以及它是否设置了

  • 我已经在谷歌上搜索了两个星期了,没有任何效果。我只想知道如何检查给定的用户名是否存在于我的MySQL数据库表中。表名为用户。但是它似乎绕过了我的if语句,直接添加用户名,导致我的表有相同用户名的重复。我试过很多代码,也试过很多方法。一直在使用MySQL,因为这是我们现在应该使用的。我可以给你我尝试过的任何方法,但这是我第100次尝试的最新方法。请注意,我知道这还没有完全准备好抵御SQL注射,我现在

  • 问题内容: 我已经在互联网上搜索了几天,但找不到仅使用ODBC和SQL来解决此问题的通用方法。 有没有办法查看数据库是否已经存在,只能使用 ODBC 。它必须是标准SQL,因为用户可以选择自己选择的DSN(意味着他自己的SQL Server)。 这意味着我无法检查服务器上的主表,因为在不同的SQL服务器上它们的名称不同。 谢谢。 问题答案: 不知道这是否为时已晚,或者对于您来说足够“便携”。 我只

  • 问题内容: 无法让Firebase识别已经输入的用户名。下面的代码显示我正在尝试将输入的用户名与数据库的DataSnapshot进行比较。该代码似乎没有拾取输入的用户名。代码是否错误? 在按钮上单击,我希望能够将用户引导到该错误,并且在该错误唯一之前,不应将该页面推送到下一个活动。 JSON树(如果有帮助) 问题答案: 是异步操作。设置回调后,代码将继续运行,而您尚未获取任何用户名。到您检查mSw

  • 我目前正在安装Firebase应用程序,并能够检索使用该应用程序的所有用户的列表。当用户首次注册该应用程序时,他们需要确认自己的电话号码,就像现在大多数iOS应用程序一样。我正在“用户”节点中存储他们的电话号码。我的问题是如何在Firebase中查询以查看该电话号码是否存在于我的数据库中?基本上,我想根据我生成的电话号码列表和所有联系人列表进行查询 这将允许我显示特定联系人当前是否正在使用该应用程

  • 在这种情况下,我希望返回,但当我执行代码时,它会引发一个异常,并带有以下消息: 提供的值为空 我不能使用,因为Dao返回的是,所以应该返回相同的类型。 在不改变DAO的情况下,如何检查用户是否存在?