2013-12-09 39 views
0

當我接近80歲時,我可能已經太老了,不能再這樣做了。儘管在20多年前終身使用了主框架編程,但我對衆多現代編程語言幾乎一無所知。我的表單有效,但似乎無法添加簡單的驗證碼來阻止提交錯誤答案或最近發生的垃圾郵件攻擊。 (不能使用圖像驗證碼作爲老年人的同胞絕不會談判他們:)也希望避免出於安全原因的JavaScript。聯繫表格提交真僞驗證碼答案

問題:FORM ECHOS假應答OK,但發送對所有答案12 OR NOT (如圖所示CAPTCHA部分)

<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> 

有什麼建議?

+1

爲什麼你接受非答案 - 'if($ quiz ==''...)'?不應該只是爲了正確的答案 - 'if($ quiz == 12){...}'。另外,你應該檢查是否首先設置了$ _POST ['quiz']',如果沒有,你可以將它設置爲一個錯誤的答案 - '$ quiz =(isset($ _ POST ['quiz']))? $ _POST ['quiz']:'錯誤答案';' – Sean

回答

0

如果你不是隨機產生你的數學問題,它仍然是很容易垃圾郵件你的形式。 This page has step-by-step instructions on preventing CSRF(包括將自動更改您的表單以包含現時標記的代碼)。從本質上講,你需要:

  1. 生成基於會話的令牌當你的頁面加載
  2. 包括一個隱藏的表單字段令牌
  3. 檢查令牌存在且會話令牌的形式提交
  4. 匹配

真棒,你編程在80! :)

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>