我正在关注this验证码教程并获得部分成功,实际上我设法让它工作但现在我需要通过Javascript验证表单,以便我有以下PHP脚本。
<? session_start(); ?>
<html>
<head>
<title>TEST</title>
</head>
<body>
<?php
echo "\n<script type=\"text/javascript\">";
echo "\n\tfunction validateCaptcha(captcha){ ";
echo "\n\t alert(captcha); }";
echo "\n</script>";
?>
<form action=next.php method=get onsubmit="return validateCaptcha('<?php
$catp = $_SESSION['captcha'];
echo $catp;
?>')"/>
<img src="captcha.php" /><br />
<input type="text" name="answer" placeholder="Enter captcha here" />
<input type="submit" name="send" value="Send" />
</form>
</body>
</html>
问题在于,每次按下按钮发送表单都没有验证,因为验证码值是旧的,我一直在努力工作几个小时我无法弄清楚如何让它工作。对我来说这很奇怪,因为生成的Javascript代码具有良好的价值。
我也尝试使用隐藏变量,例如:
<input id="checkCaptcha" name="checkCaptcha" type="hidden" value="<?php
$catp = $_SESSION['captcha']; echo $catp; ?>" />
但我没有成功。
顺便说一下,这是captcha.php代码:
<?php
session_start();
header("Expires: Tue, 01 Jan 2013 00:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
$chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$randomString = '';
for ($i = 0; $i < 5; $i++)
{
$randomString .= $chars[rand(0, strlen($chars)-1)];
}
$_SESSION['captcha'] = strtolower( $randomString );
$im = @imagecreatefrompng("captcha_bg.png");
imagettftext($im, 30, 0, 10, 38, imagecolorallocate ($im, 0, 0, 0), 'larabiefont.ttf', $randomString);
header ('Content-type: image/png');
imagepng($im, NULL, 0);
imagedestroy($im);
?>
我知道我可以使用reCaptcha但我希望以前解决它。