如何使用 PHP 正确安全地验证 CAPTCHA

我正在使用谷歌 reCAPTCHA,它工作得非常好。但由于一些问题,我开始使用 php 图像验证码。CAPTCHA 图像已正确呈现,但我无法正确验证。


我使用此代码生成 CAPTCHA


session_start();

if(isset($_SESSION['captcha_text']))

{

unset($_SESSION['captcha_text']);

}


$permitted_chars = '123456789ABCDEFGHJKLMNPQRSTUVWXYZ';

// ...

// code to generate CAPTCHA

// ...

header('Content-type: image/png');

imagepng($image);

imagedestroy($image);

?>

然后我使用此代码显示验证码


<img src="CAPTCHA/captcha.php" alt="CAPTCHA" class="captcha-image"><i style="position: absolute;" class="refresh-captcha"></i><BR>

<input autocomplete="off" style="margin-top: 0.8rem;" type="text" id="captcha" name="captcha_challenge" pattern="[A-Z]{6}">

现在我使用此代码在另一个 PHPfile 中验证 CAPTCHA


session_start();

header('Content-Type: text/html; charset=utf-8', true);

if(isset($_POST['captcha_challenge']) && strtoupper($_POST['captcha_challenge']) == $_SESSION['captcha_text']) {

    echo '<p>You entered a correct Captcha.</p>';

} else {

    echo '<p>You entered an incorrect Captcha.</p>';

}


$_SESSION['captcha_text'] = NULL;

unset($_SESSION['captcha_text']);

exit;

到现在为止它工作正常。我手动测试它,它的工作原理。但是当我使用一些安全脚本来测试表单时,我会收到垃圾邮件。为什么??我错过了什么?<--抱歉我的英语不好-->


幕布斯7119047
浏览 327回答 1
1回答

德玛西亚99

好的,在互联网搜索之后,我决定回到 Google reCaptcha 并尝试使用 reCaptcha 修复我网站中出现的显示问题。正如@Steve所说与其尝试重新发明轮子,不如省去麻烦并使用 Google reCaptcha。
打开App,查看更多内容
随时随地看视频慕课网APP