2012-07-05 49 views
0

我有一個簡單的表格發佈與形式使用驗證碼

<form id="myform" action="formprocess.php" method="POST"> 
username:<input type="text" name="username"> 
password:<input type="password" name="password"> 
<?php if($_COOKIE("login-attempt")>"4"){ 
require_once "recaptchalib.php"; 
echo recaptcha_get_html($publickey, $error); 
}?> 
<input type="submit" value="Sign in" id="signIn" name="signIn""/> 
</form> 

的問題是,是驗證碼(recaptcha_response_field)也發佈到formprocess.php頁,我想,這個驗證碼(recaptcha_response_field)值應爲在這裏檢查,如果它是正確的比用戶名和密碼的值應該被提交給formprocess.php否則重新加載此頁面的錯誤。我怎樣才能做到這一點。?

回答

0

那麼,在我眼中最容易做的事情就是驗證在formprocess.php開頭的驗證碼,如果它不起作用,然後die('CAPTCHA failed),否則運行腳本。即:

function verifyCAPTCHA(){ 
    //function that verifies the captcha... 
} 
if (!verifyCaptcha()){ 
    die('CAPTCHA Failed') 
} 
//the rest of your formprocess.php 

但是,如果你堅持從CAPTCHA驗證分隔條件formprocess.php,那麼你就可以代替改變形式action屬性類似action='captchaValidate.php'

captchaValidate.php那麼會是什麼樣子:

function verifyCAPTCHA(){ 
    //function that verifies the captcha... 
} 
if (!verifyCaptcha()){ 
    die('CAPTCHA Failed') 
}else{ 
    require('formprocess.php') 
} 

當你說你想驗證CAPTCHA「這裏」,也許你的意思是說,你想送一個AJAX請求,其中你應該檢查出https://developers.google.com/recaptcha/docs/display和他們的AJAX API。您可以以這種方式動態調用我提議的解決方案之一。也看看How to do a post request for my reCaptcha ajax api?

+0

我還有一個問題....如果用戶已禁用java腳本....在這種情況下,recaptcha將工作,但阿賈克斯將無法正常工作.... – StaticVariable 2012-07-05 15:53:49

+0

短版本:使AJAX可以在正常的'形式'內以正確的動作和所有正確的方式工作。然後製作一個提交按鈕,它會觸發一個返回false並執行你的AJAX的javascript函數。如果javascript被禁用,表單將只在操作中將數據提交給文件。 這篇文章解釋很好http://phpnoob.blogspot.ca/2006/06/making-ajax-web-forms-degrade.html。 – 2012-07-05 20:00:53

+0

解釋什麼,它也說,如果Java腳本被禁用比形式將正常工作...我們將在那種情況下做什麼.. – StaticVariable 2012-07-06 19:02:29