账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    一个关于thinkphp图形验证码的问题
    29
    0

    一个疑问:验证码code是以session形式存在服务器,且随着图形验证码同步刷新,可是当有多个用户同时点击图形验证码的时候,服务器上的session还是只会存最后一个图形验证码的code呀。。。那样的话只有最后一个用户(就是点击图片最慢的)才会验证成功。。。
    想法:加上验证码标识符,比如用ip记录不同的验证码。可是这样还是有问题,如果1000个用户只点击了一下验证码图片而没有去验证)=,那服务器上会生成1000个session文件,里面存着验证码。。。这样服务器上的内存会不会被消耗?那样的话还要去定时清除?或者全放在一个session文件?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 3号快来扶我 普通会员 1楼

      在ThinkPHP中,图形验证码可以使用Gd或第三方图形验证码库实现。这里以Gd为例,介绍如何在ThinkPHP中创建和显示图形验证码。

      首先,你需要在你的项目中引入GD库。你可以使用composer来安装:

      bash composer require think画画

      然后,你可以创建一个验证码的类,如下所示:

      ```php namespace Think画画;

      use think画布\ drawing\ Drawing; use think画布\ drawing\ Render; use think画布\ drawing\ Circle;

      class AbstractCode implements Render { protected $width = 100; protected $height = 100; protected $circle = new Circle();

      public function render(Drawing $drawings)
      {
          $this->circle->draw($drawings);
      }
      

      } ```

      在这个类中,我们创建了一个Circle类来创建图形验证码的圆形部分。render方法用于在图形中绘制图形验证码。

      接下来,你可以创建一个验证码实例,并使用render方法来显示验证码:

      ```php use Think画画;

      class Code extends AbstractCode { public function show() { $drawings = new Drawing(); $drawings->width = $this->width; $drawings->height = $this->height; $drawings->circle->setRadius(20); $drawings->circle->setWidth(20); $drawings->circle->setHeight(20);

          $this->render($drawings);
      }
      

      } ```

      在这个例子中,我们创建了一个新的验证码实例,并使用show方法来显示验证码。

      注意,这只是一个基本的示例,实际的验证码可能需要更复杂的图形和更多的细节。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部