我正在做小项目,现在我正在研究注册模块。我使用 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防止注册?
返回错误消息后停止执行:
if(strlen($user) < 3)
{
print "<span id='wrong'>username is too short</span>";
die(); //Stop right here
}
好吧,您可以通过多种方式解决它,但对于初学者来说,我建议您以 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);
我在这里发布了关于这个主题的更详细的答案。
在 jquery 代码中使用 off() 来停止执行 off() 的文档: http://api.jquery.com/off/