我想在联系表单中显示ReCapcha数字图像在提交表单时,用户必须在给定字段中编写recapcha代码...我需要知道如何生成这些randon数字......
这是输入字段的html和img ..
<img src="" alt="This Is a CAPTCHA Image"><br>
Enter the text of the image above <br>
<input name="strCaptcha" type="text" size="8" value="" maxlength="8">
下面的图片是recapcha的一个例子。请回顾并告诉我如何做到这一点..
答案 0 :(得分:0)
你有很多图书馆。
1.Cracha for Laravel 5
https://github.com/mewebstudio/captcha
安装要求此包用composer:
composer require mews/captcha
2.no-captcha(它是一个谷歌验证码)
https://github.com/anhskohbo/no-captcha
安装要求此包用composer:
composer require anhskohbo/no-captcha
如果您正在寻找自己的开发,那么您可以
session_start();
$strings = '123456789';
$i = 0;
$characters = 6;
$code = '';
while ($i < $characters)
{
$code .= substr($strings, mt_rand(0, strlen($strings)-1), 1);
$i++;
}
$_SESSION['captcha'] = $code;
//generate image
$im = imagecreatetruecolor(124, 40);
$foreground = imagecolorallocate($im, 0, 0, 0);
$shadow = imagecolorallocate($im, 173, 172, 168);
$background = imagecolorallocate($im, 255, 255, 255);
imagefilledrectangle($im, 0, 0, 200, 200, $background);
// use your own font!
$font = 'monofont.ttf';
//draw text:
imagettftext($im, 35, 0, 9, 28, $shadow, $font, $code);
imagettftext($im, 35, 0, 2, 32, $foreground, $font, $code);
// prevent client side caching
header("Expires: Wed, 1 Jan 1997 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");
//send image to browser
header ("Content-type: image/png");
imagepng($im);
imagedestroy($im);
以表格形式显示:
<img src="captcha.php">
输入上面的代码:<input type="text" name="captcha">
提交后,请检查输入的代码:
if ($_POST['captcha'] == $_SESSION['captcha'])
答案 1 :(得分:0)
我用大约10行和GD库制作了一个。
http://php.net/manual/en/ref.image.php
这很容易。我生成一个图像,并使用img src将其提供给用户。我通过$ _SESSION转移解决方案。以下是一些使其更安全的提示。
P.S。:关键是使文本和失真颜色相同,以便机器人可能会混淆您显示的符号。
建议:不要使用现成的库,因为可能存在漏洞。此外,代码的唯一性优于使用其他人的安全解决方案。毕竟我们都使用谷歌。
可选:为了方便用户 - 请勿使用o,O,Q和0。