📜  如何在PHP中生成验证码图像?

📅  最后修改于: 2022-05-13 01:56:20.463000             🧑  作者: Mango

如何在PHP中生成验证码图像?

在本文中,我们将了解如何在PHP中生成一个非常简单有效的验证码图像。验证码是智能(至少在大多数情况下)验证系统,可防止网站被机器人窃取网站数据或不必要地增加网站流量。除了防止垃圾邮件,验证码还被用作防止恶意黑客的 DDoS 攻击的保护层。

所以长篇短篇的验证码在这个 21 世纪非常有用。如今,验证码如此重要(主要是出于安全原因)应该几乎总是用像PHP这样的服务器端语言而不是客户端 JavaScript 来实现。原因是任何“机器人”都非常容易绕过安全性,因为验证是在客户端完成的(它甚至不涉及任何图像处理)。因此,出于这个原因,我们将使用通常默认安装的 GD(Graphics Draw)库在PHP中制作图像验证码。

在本文中,我们不会使用任何高级 GD 函数。但是,如果您想了解有关 GD 的更多信息,那么您可以阅读 GeeksforGeeks 上有关它的各种文章。

所以创建图像验证码的主要思想是首先要有一个验证码。 PHP将启动会话并生成验证码。

  • 验证码。 PHP
PHP


HTML
 0)
 
    // If the captcha is valid
    if ($_POST['input'] == $_SESSION['captcha'])
        $msg = 'SUCCESSFUL!!!';
    else
        $msg = 'CAPTCHA FAILED!!!';
?>
  

  

    

PROVE THAT YOU ARE NOT A ROBOT!!

                   Type the text in the image to prove         you are not a robot             
             
          
">                                
          
             
          
        Can't read the image? Click         '>             here                  to refresh!     


什么时候可以运行验证码。 PHP ,你应该有一个印有验证码的小图像。现在我们唯一需要做的就是创建一个测试。 PHP使用验证码。 PHP并根据用户的输入验证验证码。对于这个例子,我们将保持简单。当用户给我们一个错误的验证码时,我们会打印一条错误消息,当他给我们一个正确的验证码时,我们可能希望将用户重定向到不同的 URL,但现在,我们只打印一条消息。

  • 测试。 PHP

HTML

 0)
 
    // If the captcha is valid
    if ($_POST['input'] == $_SESSION['captcha'])
        $msg = 'SUCCESSFUL!!!';
    else
        $msg = 'CAPTCHA FAILED!!!';
?>
  

  

    

PROVE THAT YOU ARE NOT A ROBOT!!

                   Type the text in the image to prove         you are not a robot             
             
          
">                                
          
             
          
        Can't read the image? Click         '>             here                  to refresh!     
  • 输出:

尽管验证码可能很烦人,但如果没有验证码,我们可能不会像我们所知道的那样了解互联网。验证码对于打击垃圾邮件和保持网络活力至关重要。

不要在生产代码中使用此脚本:我们的图像验证码的主要问题是任何有经验的程序员都可以轻松创建一个可以处理图像并提取文本并发送 POST 请求并验证自己为人类的机器人。为了解决这个问题,我们也许可以在前景中添加随机线、点(单位长度的圆)等,但图像处理已经发展到只会让程序员处理图像和对其进行字符串化有点困难.
所以最好的解决方案是使用一个专门的和经过良好测试的库,比如谷歌的 reCAPTCHA,它既容易集成到你的PHP环境中,也比那些传统的“输入文本”少一些“脖子痛”,因为它有时可以如果它已经知道用户不是基于他以前的活动的机器人,则根本不生成验证码。