所以我创建了自己的PHP CAPTCHA,这是我创建它的方法:
我的数据库中有一个名为'Captchas'的表,在该表中,我有两个类别:ID和Captcha。
在Captcha页面上,我就是这样设置的:
$record = mysql_query("SELECT * FROM captchas ORDER BY rand() LIMIT 1");
while($row=mysql_fetch_array($record)){
$captcha = $row['captcha'];
echo $captcha;
}
然后我有一个带有两个输入的表单,文本和提交
我有以下代码:
echo "<form method='POST'>";
if(isset($_POST['submit'])){
$input_captcha = $_POST['input_captcha'];
if($input_captcha == $captcha){
echo "<p>Correct Captcha.</p>";
} else {
echo "<p>Incorrect Captcha.</p>";
}
}
echo "<input type='text' name='input_captcha'/>";
echo "<input type='submit' name='submit'/>";
echo "</form>";
}
此代码的作用是检查用户的输入是否等于验证码,以便它回显“正确的验证码”,如果不是,则“错误的catpcha”。 但问题是它检查输入的文本是否等于随机数组中的NEXT验证码。我不知道为什么会这样?
答案 0 :(得分:0)
我认为正在发生的是,当您尝试检查用户输入时,它正在重新加载变量验证码。首先使它不是保存为局部变量,而是将其另存为会话变量。然后尝试使验证码生成器成为一个函数,并且仅在未设置验证码的会话变量时调用它,因此阻止它覆盖您的变量以供以后使用。
这是怎么回事:
然后应该导致您与相同的两个变量进行比较。
答案 1 :(得分:0)
不是将验证码代码存储到系统变量中,而是将其存储在会话变量中,然后检查它,因为通过提交表单再次重新加载页面,从而更改/替换先前验证码的值。新的。
希望这可能会有所帮助