0

我想使用验证码发出安全的 ajax 请求以防止垃圾邮件

我的问题是当页面有 2 个这样的请求时:

按钮 1 - 按钮 2

如果我单击按钮 1 或按钮 1,验证码会发生变化

这段代码也许可以理解我的问题

索引.HTML

<script>
var code_captcha = 1234; // generated by php
</script>
<inpt type="button" value="Request 1" onclick="ajax_request('send_message.php', captcha = code_captcha);" />
<inpt type="button" value="Request 2" onclick="ajax_request('add_comment.php', captcha = code_captcha);" />

send_message.php / add_comment ....

<?
session_start();
$code = $_SESSION["code"];
if ($code == $_POST[code_captcha]){
    echo 'status:ok';
    $_SESSION["code"] = "";
}else{
    echo 'status:error';
}
?>

该行清除验证码$_SESSION["code"] = ""; .

所以如果我第一次点击请求 100% 我返回一个ok 状态

但是如果我第二次单击请求 100% 我会返回错误,因为会话已清除

任何想法,并提前感谢

如果您是 vBulletin 编码员,我认为您在标头中看到了没有垃圾评论、消息等的标记

4

1 回答 1

-1

我知道这不能解决你的问题

“我想使用验证码发出安全的 ajax 请求以防止垃圾邮件”问题

但是,我想解决您的无垃圾邮件问题。从可用性的角度来看,验证码对用户来说很糟糕。这里的那个人至少拒绝了我 3 次,因为显然,我不是人类。独特而有创意。获取/创建您自己的字符串表,向用户询问计算机无法解决的问题,然后在那里创建答案。

我知道。我知道。这听起来像是更多的工作,但想想你的用户。

于 2012-08-20T02:31:00.810 回答