1

我正在做一个小项目,现在我正在研究注册模块。我使用 Jquery.post方法调用检查输入数据是否正确的页面。一切正常,但如果数据不正确,它会显示消息但也会注册用户。这是js代码:

$("#name").keyup(function(){  
  $.post("check/user_check.php" , {  
    username: $("#name").val()  
   }, function(response)    {  
     $("#validateTips").fadeIn("slow");  
     $("#validateTips").html(response);  
   });  
});

而 user_check.php 是:

<?php
include "config.php";
$user = $_POST['username'];


$user_query = mysql_query("SELECT username FROM users WHERE username='$user'");


if(strlen($user) < 3)
{
    print "<span id='wrong'>username is too short</span>";
}

还有其他情况太长并且已经采取了,但我想你明白重点是什么。所以问题是如果 user_check.php 打印用户名不正确,如何防止注册?

4

3 回答 3

1

返回错误消息后停止执行:

if(strlen($user) < 3)
{
    print "<span id='wrong'>username is too short</span>";
    die(); //Stop right here
}
于 2013-11-09T16:38:40.737 回答
0

好吧,您可以通过多种方式解决它,但对于初学者,我建议您将响应作为 JSON 而不是 HTML 发送,并在客户端处理格式。

区分成功和错误的一种简单方法是在服务器上设置适当的 HTTP状态代码

简而言之,只要在服务器上设置一个 4XX 或 5XX 的代码,你就会在 jQuery ajax 错误/失败回调中结束。

您的代码将如下所示:

$.post('check/user_check.php',{ username: $("#name").val() }).done(function(data)
    //handle success
}).fail(function(error){
    //handle failure
    console.log(error.responseText);
});

在您的 PHP 代码中,您只需设置一个状态代码,在出现问题时指示错误:

header('HTTP/1.1 400 Bad Request', true, 400);

或者如果您使用的是 PHP >= 5.4:

http_response_code(400);

我在这里发布了关于这个主题的更详细的答案。

于 2013-11-09T17:14:36.027 回答
-1

在你的 jquery 代码中使用 off() (die() for php) 来停止执行 off() 的文档:http: //api.jquery.com/off/

于 2013-11-09T17:09:09.693 回答