【发布时间】:2017-05-24 20:14:33
【问题描述】:
我希望每个会话仅启用一次表单提交。我试图禁用提交按钮,但这个点击功能对机器人来说没什么,所以我认为每个会话额外的单次提交层是我认为可以从机器人中节省一些
或
为每次提交创建令牌,使提交更加安全和独特
哪个更好以及如何实现,因此任何用户(机器人)都不能两次提交相同的表单
我的代码是
<form role="form" method='post' action='index.php' id='cme'>
<input type="hidden" name="val" value="<?php echo $val ?>" />
<fieldset>
<div class="form-group">
<center><div class="g-recaptcha" data-sitekey="sitekey"></di</center>
</div>
<div class="row">
<center>
<input type="submit" name="claim" class="btn btn-lg btn-success btn-block" value="Claim Now" id="claim" onclick="setTimeout(disableFunction, 1);">
</center>
</div>
</fieldset>
</form>
提交部分
if(isset($_POST['claim'])) {
$recaptcha = $_POST['g-recaptcha-response'];
if(!empty($recaptcha)) {
# Use the recaptcha function here
$resp = getGoogleRecaptcha();
if($resp['success']) {
header('Location: index.php');
# Capture value from the form submit
$bonval = $_POST['bonval'];
# Insert normally
$db->fetchVal("insert into log (`user_id`,`amount`) values (?,?)", array($id, $bonval));
}
}
else { ?>
<div class="overlay"><div class="popup" style="background:red;">
<h2>Opps</h2>
<a class="close" href="#">×</a><br/>
<div><center><span class="blink_me">You missed it</span></center></div>
</div></div>
<?php }
}
现在的问题是表单在弹出窗口中打开,用户不断点击,分数不断增加,因为每次点击会话视图都是 +1
请您指导我解决此问题,以便一键提交
我认为通过 javascript 进行表单提交会更好,因此可以更明智地控制提交功能,以在多次提交单击时终止弹出窗口....我是对的,如果是,请以这种方式指导
【问题讨论】:
-
你可以使用 session 或 cookie..
-
您希望安全防范机器人,还是希望用户每次会话只能使用一次表单?这些是不同的东西。
-
目前我只想要用户限制每个会话提交一个表单,即使他一直点击
-
您在问题中使用了 SESSION 这个词!这似乎是一个可能的解决方案。在会话中保留一个变量
I already submitted -
任何有更好解决方案的人
标签: javascript php jquery forms session