【问题标题】:ReCapcha Number Generator Laravel 5.5ReCaptcha 数字生成器 Laravel 5.5
【发布时间】:2017-10-01 14:02:26
【问题描述】:

我想在联系表单中显示 ReCapcha 数字图像在提交表单时,用户必须在给定字段中编写 recapcha 代码...我需要知道如何生成这些随机数字...

这里是输入字段和 img 的 html..

 <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 的示例。请查看并告诉我如何做到这一点..

【问题讨论】:

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


    【解决方案1】:

    你有很多图书馆。

    1.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">
    

    输入上面的代码:&lt;input type="text" name="captcha"&gt; 提交后,检查输入的代码:

    if ($_POST['captcha'] == $_SESSION['captcha'])
    

    回复: Numeric Captcha for PHP

    【讨论】:

      【解决方案2】:

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

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

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

      1. 随机旋转文本
      2. 在字符之间添加随机空格
      3. 使用TTF字体,每次随机更换字体
      4. 每次使用随机文本和图像大小
      5. 使用更高级的文本扭曲和颜色
      6. 随机移动线条
      7. 将密码存储在随机 cookie 中

      P.S.:关键是让文本和扭曲的颜色相同,这样机器人就会混淆你显示的是什么符号。

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

      可选:为了用户舒适 - 不要使用 o、O、Q 和 0。

      【讨论】:

        猜你喜欢
        • 2018-06-22
        • 2018-04-21
        • 2019-04-04
        • 2017-10-30
        • 2018-02-13
        • 2018-03-28
        • 1970-01-01
        • 2018-10-31
        • 1970-01-01
        相关资源
        最近更新 更多