2012-06-27 56 views
0

是否可以使用「die」標記鏈接到錯誤站點,而不是默認顯示的文本?當Recaptcha錯誤時顯示錯誤頁面

require_once('recaptchalib.php'); 
$privatekey = "*******"; 
$resp = recaptcha_check_answer ($privatekey, 
$_SERVER["REMOTE_ADDR"], 
$_POST["recaptcha_challenge_field"], 
$_POST["recaptcha_response_field"]); 
if (!$resp->is_valid) { 
die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." . 
"(reCAPTCHA said: " . $resp->error . ")"); 
} 

像:

die ('error.php'); 

當然,這是行不通的。但我無法弄清楚如何使用模板標籤。

回答

0

die()不能做其他比打印傳遞的值,並停止腳本任何東西,但你的代碼已經有結構做你想做什麼:

if (!$resp->is_valid) { 
    header('Location: http://example.com'); 
    die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." . 
     "(reCAPTCHA said: " . $resp->error . ")"); 
} 

請注意,如果此代碼之前已經輸出任何東西,您必須使用不同的方法重定向,因爲header()在標頭髮送後(通過啓動輸出)將不起作用。

值得注意的是,如果驗證碼不匹配,而不是重定向和停止執行,您可能會更好地更改程序的流程。如果您重定向(按原樣),則會丟失與當前請求相關聯的所有數據,而如果您設置類似$captcha_error = true之類的內容並繼續執行程序(根據$captcha_error根據需要更改流程),您將獲得更好的用戶體驗,因爲您不重置整個表單,因爲驗證碼錯誤。