联系表格提交真假验证码答案

时间:2013-12-09 05:42:29

标签: php

即将到80岁,我可能已经太老了,不能再这样做了。尽管20多年前从一生的主框架编程中退休,但我对众多现代编程语言几乎一无所知。我的表单有效,但似乎无法添加一个简单的验证码来阻止提交错误的答案或最近的spambots攻击。 (不能使用图像验证码,因为老年兄弟永远不会谈判他们:)也希望出于安全原因避免使用javascript。

问题:表格ECHOS FALSE ANSWER OK,但是所有答案都是12或者不是 (CAPTCHA PORTION SHOWN)

<BR>Prevent Robot Spam: What is 6 + 6? (Number)

<input type='text' name='quiz' id='quiz' size='8' /> &nbsp;
<?php

$quiz = $_POST['quiz'];

if ($quiz == '' || $quiz == 12) {

// true answer, form sent

} else {
echo 'false answer, please back < browser and try again';

exit; 

} 

?>
<input type='submit' name='Sent From Universe Lodge Web-Site' id='submit' value='SEND YOUR MESSAGE' /></BR>

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

如果您没有随机生成数学问题,那么垃圾邮件的表单仍然非常容易。 This page has step-by-step instructions on preventing CSRF(包括将自动更改表单以包含nonce令牌的代码)。基本上你需要:

  1. 在您的网页加载时生成基于会话的令牌
  2. 在隐藏的表单字段中包含该令牌
  3. 检查令牌是否存在并在表单提交上匹配会话令牌
  4. 很棒,你在80岁的时候编程! :)

答案 1 :(得分:0)

试试吧     
防止机器人垃圾邮件:什么是6 + 6? (数目)

<input type='text' name='quiz' id='quiz' size='8' /> &nbsp;
<?php
if(isset($_POST['quiz'])){
     $quiz = $_POST['quiz'];

     if ($quiz == 12) {

         // true answer, form sent

     } else {
            echo 'false answer, please back < browser and try again';

           exit; 

     } 
}


?>
<input type='submit' name='Sent From Universe Lodge Web-Site' id='submit' value='SEND YOUR MESSAGE' /></BR>