验证以检查数据库中是否已存在用户名而不加载新页面

时间:2012-04-26 21:41:32

标签: php javascript mysql forms validation

我设计了一个注册表单,您可以看到here。它包括一个javascript验证脚本,除了检查MySQL数据库中是否已存在用户名外,还处理所有内容。

当前处理的方式是通过一个单独的PHP页面(register.php),在提交表单时调用,并检查MySQL数据库,如果用户名已经存在,并且链接返回到html,则会显示一些文本页面上有注册表格。

我想知道是否有办法不必加载新的PHP页面,但是当用户尝试提交表单但用户名时,会向html表单附加一条错误消息(与所有其他验证一样)已经存在。唯一的方法是没有表单发布的单独的PHP,而是包含第二个文件中的所有PHP(连接到数据库,检查用户名,并添加新用户)注册页面?

我希望这很清楚!

谢谢,

尼克

2 个答案:

答案 0 :(得分:1)

我假设你在谈论一个ajax请求?如果你不知道它是什么,谷歌它会发现很多信息。

我总是使用像jQuery或dojo这样的javascript库,这使得ajax变得更加容易,但也许你不想为整个javascript库增加一些javascript使用的开销。

基本前提是:

  1. 您的javascript向服务器发送请求,在本例中为您的register.php页面。
  2. register.php文件使用您在ajax请求中传递的params运行。
  3. javascript接收来自register.php文件的响应。在这种情况下,最简单的做法是:

    • 如果用户名确实存在,则返回false,然后您的javascript函数可以在回调中使用以弹出验证错误。

    • 如果用户名不存在,则register.php文件可以注册/登录,并返回true给javascript。然后,javascript会将用户重定向到他们应该去的页面,好像在后台没有发生任何事情。

  4. 为了编码目的,这里有一些关于如何用jQuery做的伪代码:

    $.ajax({
      url:'register.php?username=theUsersName',
      dataType:'html',
      success:function(data){
        if (data)
          --redirect to homepage
        else
          --pop up validation error
      }
    });
    

答案 1 :(得分:0)