首页 > 编程语言 >Docker PHP中安装gd扩展并生成图形验证码

Docker PHP中安装gd扩展并生成图形验证码

时间:2023-11-15 15:12:30浏览次数:40  
标签:php -- 验证码 图形 gd docker PHP Docker

在容器中执行:

apt install libjpeg62-turbo-dev libfreetype6-dev -y

docker-php-ext-configure gd --enable-gd --with-freetype --with-jpeg

docker-php-ext-install gd

可运行:php --ri gd 查看安装结果,重启docker容器。

图形验证码示例代码:

<?php
session_start();
function random($len) {
    $srcstr = "123456789ABCDEFGHJKLNPQRSTUVXYZ";
    $strs = "";
    for ($i = 0; $i < $len; $i++) {
        $strs .= $srcstr[mt_rand(0,30)];
    }
    return $strs;
}
 
//随机生成的字符串
$str = random(5); 
 
//验证码图片的宽度
$width  = 80;      
 
//验证码图片的高度
$height = 40;     
 
//声明需要创建的图层的图片格式
@ header("Content-Type:image/png");
 
//创建一个图层
$im = imagecreate($width, $height);
 
//背景色
$back = imagecolorallocate($im, 0xFF, 0xFF, 0xFF);
 
//模糊点颜色
$pix  = imagecolorallocate($im, 100, 207, 95);
 
//字体色
$color = imagecolorallocate($im, 100, 207, 2);

//边框颜色
$col = imagecolorallocate($im, 100, 164, 26);

//字体
putenv('GDFONTPATH=' . realpath('.'));//解决linux下GD库版本低于2.0.18不能显示的问题
$font = 'arial.ttf';
 
//绘模糊作用的点
mt_srand();
for ($i = 0; $i < 800; $i++) {
    imagesetpixel($im, mt_rand(0, $width), mt_rand(0, $height), $pix);
}
 
//输出字符
imagettftext($im, 16, 0, 5, 28, $color, $font, $str);

//输出矩形
imagerectangle($im, 0, 0, $width -1, $height -1, $col);
 
//输出图片
imagepng($im);
 
imagedestroy($im);
 
$str = md5(strtolower($str));
 
//选择 Session
$_SESSION["verification"] = $str;
?>

  

标签:php,--,验证码,图形,gd,docker,PHP,Docker
From: https://www.cnblogs.com/Don/p/17833898.html

相关文章

  • 批量导入和导出docker镜像文件
    维护服务器时,如果服务器没有网络,还需要批量加载多个Docker镜像文件,我们可以使用脚本通过循环来自动化这个操作过程。批量导入docker镜像文件创建一个文本文件,列出你要加载的所有镜像文件路径。每行一个文件路径。创建一个Shell脚本(例如load_images.sh),并打开它。在脚本中,使用docker......
  • 如何使用docker-compose重新启动单个容器
    内容来自DOChttps://q.houxu6.top/?s=如何使用docker-compose重新启动单个容器我有一个包含4个容器的docker-compose.yml文件,它们分别是redis、postgres、api和worker。在开发worker容器期间,我经常需要重新启动它以应用更改。有没有一种好的方式可以重新启动单个容器(例如wor......
  • Docker logs 命令格式总结
    1、Dockerlogs命令格式dockerlogs参数容器名/容器id参数说明:--details显示提供给日志的其他详细信息--follow,-f实时跟踪日志输出--since显示自某个timestamp之后的日志大于等于某个时间,或相对时间,如1h就是1h)--tail,-nall从日志末尾显示的行数,默认值为all全......
  • 解决docker容器重启后adb连接手机重新授权问题
    安卓adb认证文件在~/.android目录下,在容器启动时将此目录作为数据卷持久化可以解决docker镜像重新编译后,需要在手机端重新点击授权的问题dockerrun-it-v/root/xxx/.android:/root/.androiddocker_image_name/bin/bash参数-v冒号前是宿主机目录,冒号后是容器目录。经测验......
  • windows ewomail docker搭建流程记录
     一、安装命令dockerrun-d-hmail.dowhere.com--restart=always-p25:25-p109:109-p110:110-p143:143-p465:465-p587:587-p993:993-p995:995-p8182:80-p8181:8080-p13307:3306-vD:/dockercontainer/ewomail/mysql/:/mysql/data/-vD:/dockerconta......
  • 从0开始构建WSL工作平台(VSCode、ssh、Xftp、Docker)
    一、命令行界面安装1、win+S,搜索PowerShell,右键管理员身份运行2、输入命令,启用 适用于Linux的Windows子系统 功能dism.exe/online/enable-feature/featurename:Microsoft-Windows-Subsystem-Linux/all/norestart3、在MicrosoftStore中下载中意的Linux分发版(如Ubu......
  • linux离线安装portainer&配置远程连接其他linux服务器的docker环境
    1、下载安装包的地址https://github.com/portainer/portainer/releases/tag/2.19.2 2、将安装包上传linux服务器并解压cd到安装包所在目录后执行如下命令解压:forfilein*.tar.gz;dotar-zxvf"$file"--strip-components=1;done3、设置环境变量echo-e"\n#设置port......
  • docker system prune -a
    dockersystemprune-a  docker system prune -a 是一个Docker命令,用于清理Docker系统中未使用的镜像、容器、网络和数据卷等资源。这个命令会删除所有未被使用的资源,包括未被使用的...TRANSLATEwithxEnglishArabicHebrewPolishBulgarianHindi......
  • docker查看镜像日志
    在Docker中,可以使用dockerlogs命令来查看容器的日志,而不是直接查看镜像的日志。镜像是一个静态的文件,而容器是一个运行中的实例,它基于镜像创建而来,并且可以产生日志。以下是查看容器日志的基本语法:dockerlogs[OPTIONS]CONTAINER其中:OPTIONS包括一些选项,例如-f表示跟随......
  • Docker 部署 java应用
    创建DockerfileFROMopenjdk:8-jdk-alpine#前一个dns.jar为上传的jar包,后一个dns.jar是将服务器中jar包对应在容器中运行的jar包名称ADDdns.jardns.jar#容器暴露的端口号,需要与jar包在容器中运行使用端口号一致EXPOSE9999#容器启动之后执行的命令,java-jard......