私はあちこちでいくつかのツットをたどり、より大きなプロジェクトに実装したいセッションで独自のキャプチャを作成しました。キャプチャは、スパムの繰り返しを防ぐために、連絡先/電子メールの送信セクションで他の場所と同様に使用する必要があります.
問題 - キャプチャを見逃して [戻る] ボタンを押すと、キャプチャが更新されません。これは悪いことと同じくらい良いことであり、ajax を使用すると、キャプチャがページを更新せず、キャプチャが自動的に更新されないことを意味します。キャプチャは別のファイルで作成されているため、同じファイルを再度呼び出すと問題が解決するはずです。
解決策 - 3 回試行するシステムが必要です。キャプチャが 3 回推測されない場合は、ページが更新されます。
PHP CAPTCHA コード:
<?php
session_start();
$text = rand(10000, 99999);
$_SESSION['captcha'] = $text;
// Create the image
$im = imagecreatetruecolor(400, 30);
// Create some colors
$white = imagecolorallocate($im, 255, 255, 255);
$grey = imagecolorallocate($im, 25, 25, 25);
$black = imagecolorallocate($im, 0, 0, 255);
imagefilledrectangle($im, 0, 0, 399, 29, $white);
$font = 'Candara.ttf';
imagettftext($im, 20, 0, 11, 21, $grey, $font, $text);
imagettftext($im, 20, 0, 10, 20, $black, $font, $text);
imagepng($im);
imagedestroy($im);
?>
HTML テスト コード:
<form action="submit.php" method="post">
Message: <textarea name="comment"></textarea><br>
Captcha: <input type="text" name="val_code"/> <img src="generate captcha.php"><br>
<input type="submit" value="Submit" name="Submit"/>
</form>
PHP コードを送信:
<?php
session_start();
if($_POST["val_code"] != $_SESSION['captcha'] OR $_SESSION['captcha'] == '') {
echo "<b><font style='color: purple'>Wrong captcha value. Please go back and resend the message</font></b>";
}
else
{
echo "<b><font style='color: green'>Thank you for your message!</font></b>";
}
?>