2012-03-26 195 views
0

我使用下面的代碼來訪問驗證碼驗證驗證碼

<img src="captcha_code_file.php?rand=<?php echo rand(); ?>" id="captchaimg" ><br /> 
<label for="message">Enter the code above here :</label> 
<input id="6_letters_code" name="6_letters_code" type="text"> 

我使用jQuery驗證形式,無法驗證與右圖像驗證碼,我如何驗證呢? 我有下面的代碼可能是能夠得到它正確

if(empty($_SESSION['6_letters_code']) || 
    strcasecmp($_SESSION['6_letters_code'], $_POST['6_letters_code']) != 0) 
    { 
     //Note: the captcha code is compared case insensitively. 
     //if you want case sensitive match, update the check above to 
     // strcmp() 
     $errors .= "\n The captcha code does not match!"; 
    } 

指引我請!三江源

+0

當你輸入你的問題時,這個方便的**如何格式化**框在文本的右側區。值得一讀,正如文本區域上方的** [?] **按鈕所提供的信息一樣。 **編輯**:看起來像Kolink爲你修復它,但因爲這是你的第四個問題,所以在你自己正確格式化的時候就會出現。另外,我爲你添加了'php'標籤,因爲這種**的驗證必須在服務器端完成,而你的第二個代碼塊看起來像PHP。 – 2012-03-26 09:35:17

+0

遺憾!現在請引導我? – 2012-03-26 09:36:41

+0

你使用哪個驗證插件? – ManseUK 2012-03-26 09:37:48

回答

1

您可以添加一條規則是這樣的:

rules: { 
    6_letters_code: { 
     required: true, 
     remote: "process.php" 
    } 
} 

其中process.php是要使用檢查CAPTCHA的PHP網址 - 所有你需要做的是返回truefalse

Details of the remote option here

你的PHP應該是這樣的:

if(empty($_SESSION['6_letters_code']) || strcasecmp($_SESSION['6_letters_code'], $_GET['6_letters_code']) != 0) { 
    echo "false"; 
} else { 
    echo "true"; 
} 

看來,remote選項使用get,而不是post。有一個live example here你可以使用Firebug(或任何瀏覽器調試器)來查看正在發送/接收的AJAX

+0

@ManseUk ---是它的作品謝謝,但如果我錯過了任何字母或錯過鍵入它,它明確接受?我可以驗證嗎? – 2012-03-26 09:55:16

+0

@PujaVerma是剛剛從你的PHP返回'FALSE' - 與你的新PHP函數更新你的問題,因爲它現在是 – ManseUK 2012-03-26 09:59:49

+0

@PujaVerma我已經更新了我的答案,包括一些PHP – ManseUK 2012-03-26 10:08:31