如果用户不被禁止,用户可以在这里发表评论。所以我有一个php函数来检查被禁止的用户。如果评论表单提交,ajax调用第一次检查此用户是否被禁止。如果没有:评论将提交,否则显示按摩。
在这里,我不能提交任何评论,如果禁止或不,网页刷新,如果我试图提交。In也不能理解如何应用我的banneduser()响应来检查表单提交。
php函数:(我不想改变它,因为我用了更多的例子)
//user name banned by user
function Banned($user){
global $db;
if(!get_magic_quotes_gpc()){
$touser = addslashes($user);
}
$byuser = $_SESSION['user'];
$result = mysqli_query($db,"SELECT * FROM blocking WHERE byname = '$byuser' AND toname = '$touser'") or die(mysqli_error($db));
return (mysqli_num_rows($result) > 0);
}Ajax:
// check banned user
function banneduser(){
var Bauthor = $("#author").attr("value");
$.ajax({
type: "POST",
url: "../common",
data: "action=Banned&user="+ Bauthor,
success: function(data){
// How to play with this data
if(data){
return false;
}
}
});
return false;
}
//comment submit if user not banned
$(".reply").on("click",function(){
if(banneduser()){
// make form submission
} else { // You are banned}
});发布于 2015-08-27 11:21:15
AJAX请求是异步的,这意味着代码的其余部分(即return false将在响应处理之前执行)。这意味着banneduser()将始终返回false。
您应该做的是将回调函数传递给banneduser,然后在接收到AJAX响应后执行该函数:
function banneduser(callback){
var Bauthor = $("#author").attr("value");
$.ajax({
type: "POST",
url: "../common",
data: "action=Banned&user="+ Bauthor,
success: function(data){
callback(data)
}
});
return false;
}
//comment submit if user not banned
$(".reply").on("click",function()
{
banneduser(function (is_banned)
{
if (is_banned)
{
// You are banned
}
else
{
// Submit form
}
}
)
});不过,这个脚本很容易被黑。对于一个知道自己在做什么的访问者来说,更改#author的值是微不足道的,直到他找到一个有用的值为止。您应该使用纯服务器端解决问题的解决方案(即存储作者值的会话变量)。
https://stackoverflow.com/questions/32247869
复制相似问题