這是我的第一篇文章,所以不要討厭如果我以錯誤的方式做某件事。 我想用邏輯問題爲我的網站做一個驗證碼。我認爲它比reCaptcha更好。無論如何,我用很多「谷歌」做了一個奇特的代碼,但它肯定會犯一些錯誤,我也想知道,如何從數據庫驗證答案。我的數據庫看起來是這樣的:從SQL表和外部檢查的邏輯驗證碼
ID問題答案
1的例子嗎? exampleanswer
我當前的代碼是這樣的:
<?php
$database_db="general";
$user_db="root";
$password_db="somepass";
$host_db="localhost";
$link=mysql_connect($host_db,$user_db,$password_db) or die ("couldnot connect: ".mysql_error());
mysql_select_db($database_db, $link) or exit('Error Selecting database: '.mysql_error()); ;
$query = "SELECT * FROM `captcha` ORDERED BY RAND() LIMIT 1";
$question=mysql_query($query);
$answer=$_POST["answer"];
$errormessage = "";
$sql="SELECT * FROM captcha where question='$question' and answer='$answer'";
$result = mysql_query($sql, $link) or exit('$sql failed: '.mysql_error());
$num_rows = mysql_num_rows($result);
if($num_rows==0){
header("Location: error.php");
} else {
header("Location: success.php");
exit;
}
?>
<html>
<body>
<form method="post">
<?php echo $question; ?>
<input type="text" name="answer" id="answer" />
<input type="submit" name="submit" value="submit" />
</form>
</body>
</html>
Success.php是一個簡單的文件,其中用戶進入,如果他所做的一切好,error.php是包含以下代碼的文件:
<?php echo "Captcha is not valid! Please try again"; ?>
另請注意你會改變什麼來優化這段代碼。 如果準備就緒,我還有其他問題:如何在任何其他外部網站上實現它。
感謝你的幫助,MLL
謝謝你的快速回復!如果我在我的電腦上,我會測試這個代碼。另外,HTML部分是好的嗎? – MLL
你應該在HTML中擁有一個標題標籤等。文本輸入字段的標籤將幫助用戶知道在哪裏輸入。你應該提出這個問題,可能是一個代表問題的數字(即問題1是如此這般,問題2是如此)。 @paul提出的建議也值得銘記。也許值得擁有答案表並允許用戶選擇答案(大多數可能的答案都是錯的,所以你拒絕答案)。還應該指出,ORDER BY RAND()有點慢,但可能不是像這樣的小表上的問題。 – Kickstart
謝謝!我會糾正它們。你有什麼建議而不是RAND(ORDER BY)()? – MLL