ReCapcha数字生成器Laravel 5.5

时间:2017-10-01 14:02:26

标签: php laravel-5 recaptcha contact-form laravel-blade

我想在联系表单中显示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的一个例子。请回顾并告诉我如何做到这一点..

enter image description here

2 个答案:

答案 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'])

回复: Numeric Captcha for PHP

答案 1 :(得分:0)

我用大约10行和GD库制作了一个。

http://php.net/manual/en/ref.image.php

这很容易。我生成一个图像,并使用img src将其提供给用户。我通过$ _SESSION转移解决方案。以下是一些使其更安全的提示。

  1. 随机旋转文字
  2. 在字符之间添加随机空格
  3. 使用TTF字体并每次随机更改字体
  4. 每次使用随机文字和图片尺寸
  5. 使用更高级的文本扭曲和颜色
  6. 随机移动线
  7. 将密码存储在随机cookie中
  8. P.S。:关键是使文本和失真颜色相同,以便机器人可能会混淆您显示的符号。

    建议:不要使用现成的库,因为可能存在漏洞。此外,代码的唯一性优于使用其他人的安全解决方案。毕竟我们都使用谷歌。

    可选:为了方便用户 - 请勿使用o,O,Q和0。