我正在制作小项目,现在我正在开发注册模块。我使用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打印那个用户名不正确,该如何防止注册?
答案 0 :(得分:1)
返回错误消息后停止执行:
if(strlen($user) < 3)
{
print "<span id='wrong'>username is too short</span>";
die(); //Stop right here
}
答案 1 :(得分:0)
嗯,您可以通过多种方式解决它,但对于初学者,我建议您将响应发送为JSON而不是HTML,并在客户端处理格式化。
区分成功和错误的一种简单方法是在服务器上设置适当的HTTP status code。
简而言之,只需在服务器上设置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&gt; = 5.4:
http_response_code(400);
我已就此主题here发布了更详细的答案。
答案 2 :(得分:-1)
在你的jquery代码中使用off()(对于php来说是die())来停止执行off()的文档:http://api.jquery.com/off/