问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

php的图片验证码代码

发布网友 发布时间:2022-04-23 12:30

我来回答

4个回答

热心网友 时间:2022-04-07 06:58

这个是phpcms的验证码,经过十几万个网站经验的,非常好用
<?php

session_start();

$enablegd = 1;
//判断图像处理函数是否存在
$funcs = array('imagecreatetruecolor','imagecolorallocate','imagefill','imagestring','imageline','imagerotate','imagedestroy','imagecolorallocatealpha','imageellipse','imagepng');
foreach($funcs as $func)
{
if(!function_exists($func))
{
$enablegd = 0;
break;
}
}

ob_clean(); //清理缓冲

if($enablegd)
{
//create captcha
$consts = 'cdfgkmnpqrstwxyz23456';
$vowels = 'aek23456789';
for ($x = 0; $x < 6; $x++)
{
$const[$x] = substr($consts, mt_rand(0,strlen($consts)-1),1); //获取$consts中的一个随机数
$vow[$x] = substr($vowels, mt_rand(0,strlen($vowels)-1),1); //获取$vowels中的一个随机数
}
$radomstring = $const[0] . $vow[0] .$const[2] . $const[1] . $vow[1] . $const[3] . $vow[3] . $const[4];
$_SESSION['checkcode'] = $string = substr($radomstring,0,4); //显示4个字符

$imageX = strlen($radomstring)*8; //图像的宽
$imageY = 20; //图像的高
$im = imagecreatetruecolor($imageX,$imageY); //新建一个真彩色图像

//creates two variables to store color
$background = imagecolorallocate($im, rand(180, 250), rand(180, 250), rand(180, 250)); //背景色
$foregroundArr = array(imagecolorallocate($im, rand(0, 20), rand(0, 20), rand(0, 20)),
imagecolorallocate($im, rand(0, 20), rand(0, 10), rand(245, 255)),
imagecolorallocate($im, rand(245, 255), rand(0, 20), rand(0, 10)),
imagecolorallocate($im, rand(245, 255), rand(0, 20), rand(245, 255))
);
$foreground2 = imagecolorallocatealpha($im, rand(20, 100), rand(20, 100), rand(20, 100),80); //分配颜色并说明透明度
$middleground = imagecolorallocate($im, rand(200, 160), rand(200, 160), rand(200, 160)); //中间背景
$middleground2 = imagecolorallocatealpha($im, rand(180, 140), rand(180, 140), rand(180, 140),80); //中间背景2

//与左上角的颜色相同的都会被填充
imagefill($im, 0, 0, imagecolorallocate($im, 250, 253, 254));
//往图像上写入文字
imagettftext($im, 12, rand(30, -30), 5, rand(14, 16), $foregroundArr[rand(0,3)], XINCHENG_ROOT.'include/fonts/ALGER.TTF', $string[0]);
imagettftext($im, 12, rand(50, -50), 20, rand(14, 16), $foregroundArr[rand(0,3)], XINCHENG_ROOT.'include/fonts/ARIALNI.TTF', $string[1]);
imagettftext($im, 12, rand(50, -50), 35, rand(14, 16), $foregroundArr[rand(0,3)], XINCHENG_ROOT.'include/fonts/ALGER.TTF', $string[2]);
imagettftext($im, 12, rand(30, -30), 50, rand(14, 16), $foregroundArr[rand(0,3)], XINCHENG_ROOT.'include/fonts/arial.ttf', $string[3]);

//画边框
$border = imagecolorallocate($im, 133, 153, 193);
imagerectangle($im, 0, 0, $imageX - 1, $imageY - 1, $border);

//画一些随机出现的点
$pointcol = imagecolorallocate($im, rand(0,255), rand(0,255), rand(0,255));
for ($i=0;$i<80;$i++)
{
imagesetpixel($im,rand(2,$imageX-2),rand(2,$imageX-2),$pointcol);
}
//画随机出现的线
for ($x=0; $x<9;$x++)
{
if(mt_rand(0,$x)%2==0)
{
imageline($im, rand(0, 120), rand(0, 120), rand(0, 120), rand(0, 120), rand(0, 999999)); //画线
imageellipse($im, rand(0, 120), rand(0, 120), rand(0, 120), rand(0, 120), $middleground2); //画椭圆
}
else
{
imageline($im, rand(0, 120), rand(0, 120), rand(0, 120), rand(0, 120), rand(0, 999999));
imageellipse($im, rand(0, 120), rand(0, 120), rand(0, 120), rand(0, 120), $middleground);
}
}
//output to browser
header("content-type:image/png\r\n");
imagepng($im);
imagedestroy($im);
}
else
{
$files = glob(XINCHENG_ROOT.'images/checkcode/*.jpg');
if(!is_array($files)) die('请检查文件目录完整性:/images/checkcode/');

$checkcodefile = $files[rand(0, count($files)-1)]; //随机其中一个文件
$_SESSION['checkcode'] = substr(basename($checkcodefile), 0, 4); //获得文件名

header("content-type:image/jpeg\r\n");
include $checkcodefile;
}
?>

热心网友 时间:2022-04-07 08:16

<?php
srand((double)microtime()*1000000);//设置随机数的种子
$im=imagecreate(45,18); //im:验证码图片;设置一个45*18像素的画布
$black=imagecolorallocate($im,0,0,0); //设置black的颜色范围
$white=imagecolorallocate($im,255,255,255);//设置white的颜色范围
$gray=imagecolorallocate($im,200,200,200);//设置gray的颜色范围
imagefill($im,0,0,$gray);//区域填充,在im图像的坐标x,y(0,0)处用

gray颜色执行区域填充
session_register("autonum");//注册一个新的变量(autonum)到session中
$_SESSION["autonum"]="";
for($i=0;$i<4;$i++){//循环输出一个4位的随机数
//mt_rand()作用:取得乱数值。
$str=mt_rand(1,3); //产生1-3的随机数,用来指定验证码字体
$size=mt_rand(3,6); //用来产生3-6的随机数,用来指定每位验证码数字的

高度
$authnum=mt_rand(0,9);//产生0-9的随机数,用来显示验证码数字
$_SESSION["autonum"].=$authnum;//将验证码连接成字符串保存在session变

量autonum中
imagestring($im,$size,(5+$i*10),$str,$authnum,imagecolorallocate

($im,rand(0,130),rand(0,130),rand(0,130)));
//imagestring:水平地绘制一行字符串。整句的作用是:显示验证码数字
}
for($i=0;$i<200;$i++){//在创建的图片中显示点
$randcolor=imagecolorallocate($im,rand(0,255),rand(0,255),rand

(0,255));
imagesetpixel($im,rand()%70,rand()%30,$randcolor);
}
imagepng($im);//以png格式输出验证码图片
imagedestroy($im);//释放关联内存
?>

热心网友 时间:2022-04-07 09:51

<?php
Header("Content-type: image/png");
define("_FONT_DIR", $_SERVER['SystemRoot']."\\fonts\\times.ttf");
class textPNG {
//var $font = "CALIBRI.TTF"; //default font. directory relative to script directory.
var $msg = "test"; // default text to display.
var $size = 26;
var $rot = 7; // rotation in degrees.
var $pad = 0; // padding.
var $transparent = 1; // transparency set to on.
var $red = 0; // white text...
var $grn = 0;
var $blu = 0;
var $bg_red = 10; // on black background.
var $bg_grn = 10;
var $bg_blu = 10;

function draw() {
$width = 0;
$height = 0;
$offset_x = 0;
$offset_y = 0;
$bounds = array();
$image = "";

// determine font height.
$bounds = ImageTTFBBox($this->size, $this->rot, _FONT_DIR, "W");
if ($this->rot < 0) {
$font_height = abs($bounds[7]-$bounds[1]);
} else if ($this->rot > 0) {
$font_height = abs($bounds[1]-$bounds[7]);
} else {
$font_height = abs($bounds[7]-$bounds[1]);
}

// determine bounding box.
$bounds = ImageTTFBBox($this->size, $this->rot, _FONT_DIR, $this->msg);
if ($this->rot < 0) {
$width = abs($bounds[4]-$bounds[0]);
$height = abs($bounds[3]-$bounds[7]);
$offset_y = $font_height;
$offset_x = 0;

} else if ($this->rot > 0) {
$width = abs($bounds[2]-$bounds[6]);
$height = abs($bounds[1]-$bounds[5]);
$offset_y = abs($bounds[7]-$bounds[5])+$font_height;
$offset_x = abs($bounds[0]-$bounds[6]);

} else {
$width = abs($bounds[4]-$bounds[6]);
$height = abs($bounds[7]-$bounds[1]);
$offset_y = $font_height;
$offset_x = 0;
}

$image = imagecreate($width+($this->pad*2)+1,$height+($this->pad*2)+1);

$background = ImageColorAllocate($image, $this->bg_red, $this->bg_grn, $this->bg_blu);
$foreground = ImageColorAllocate($image, $this->red, $this->grn, $this->blu);

if ($this->transparent) ImageColorTransparent($image, $background);
ImageInterlace($image, false);

// render it.
ImageTTFText($image, $this->size, $this->rot, $offset_x+$this->pad, $offset_y+$this->pad, $foreground, _FONT_DIR, $this->msg);

// output PNG object.
imagePNG($image);
}
}

$text = new textPNG;
if (isset($_REQUEST['msg']) ) $text->msg = $_REQUEST['msg']; // text to display
if (isset($_REQUEST['font'])) $text->font = $_REQUEST['font']; // font to use (include directory if needed).
if (isset($_REQUEST['size'])) $text->size = $_REQUEST['size']; // size in points
if (isset($_REQUEST['rot'])) $text->rot = $_REQUEST['rot']; // rotation
if (isset($_REQUEST['pad'])) $text->pad = $_REQUEST['pad']; // padding in pixels around text.
if (isset($_REQUEST['red'])) $text->red = $_REQUEST['red']; // text color
if (isset($_REQUEST['grn'])) $text->grn = $_REQUEST['grn']; // ..
if (isset($_REQUEST['blu'])) $text->blu = $_REQUEST['blu']; // ..
if (isset($_REQUEST['bg_red'])) $text->bg_red = $_REQUEST['bg_red']; // background color.
if (isset($_REQUEST['bg_grn'])) $text->bg_grn = $_REQUEST['bg_grn']; // ..
if (isset($_REQUEST['bg_blu'])) $text->bg_blu = $_REQUEST['bg_blu']; // ..
if (isset($_REQUEST['tr'])) $text->transparent = $_REQUEST['tr']; // transparency flag (boolean).
$text->draw();
?>

热心网友 时间:2022-04-07 11:42

http://jingyan.baidu.com/article/d45ad1488e7aa569552b80f3.html

这里有更加丰富详细的验证码
如何用PHP生成验证码

7、输出图片;8、释放图片所占内存。session_start(); getCode(4,60,20); function getCode($num,$w,$h) { $code = ""; for ($i = 0; $i &lt; $num; $i++) { $code .= rand(0, 9); } //4位验证码也可以用rand(1000,9999)直接生成 //将生成的验证码写...

aippt自动生成工具

随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图、条形...

php中的验证码,这段代码是什么意思?请高手指教!谢谢!

这个代码的意思,就是刷新图片显示,另外一个地方肯定有下面的标签: 你的这个语句就修改这个图片标签显示的图片内容,修改后相当于:

如何用php实现验证码的制作

&lt;?php //验证码:文本类型为图像 header("content-type:image/png");define('TYPE',3);//1.字母 2.字母数字 3.数字 4.逻辑 5.汉字 session_start();//创建画布 img = imagecreatetruecolor(90,33);//创建颜色 //$bgcolor = imagecolorallocate($img,rand(200,255),rand(200,255)...

php 验证码 使用

就可以了 --- leboc代码你都没看懂,$_GET["action"]=="verifycode" 是判断动作的,当动作为verifycode的时候调用rand_create()函数产生一个随机验证码.不是你说的 "每个验证码不会都是"verifycode"?吧? ".而是每次调用验证码都要用verifycode 补充回答--- 弹出迅雷?请确认你的电脑支持PHP,的...

验证码怎么用php实现?

代码二:&lt;?php / Filename: authimg.php Author: hutuworm Date: 2003-04-28 Copyleft hutuworm.org / //生成验证码图片 Header("Content-type: image/PNG");srand((double)microtime()*1000000);im = imagecreate(58,28);black = ImageColorAllocate($im, 0,0,0);white = ...

php做验证码图片如果不加header("Content-Type:image/png")好像也不会...

header("Content-Type:image/png") 这句代码是告诉浏览器输出的内容是图像(png格式),如果没有可能不会出错,但不如这样明确的作出内容指定更好,一是效率问题,二是避免某些场合出错,导致不能正确显示图片。

thinkphp 验证码怎么输出

thinkphp 3.1版本输出验证码 Public function verify(){ import('ORG.Util.Image'); Image::buildImageVerify();}//调用verify方法就可以输出验证码thinkPHP3.2版本输出验证码 Verify = new \Think\Verify();$Verify-&gt;entry();thinkPHP 5.0版本输出验证码 //验证码配置//然后在应用配置...

下面段php代码怎么得到验证码的值啊(在页面里面直接输出就可以)。_百 ...

name=$_SESSION[ 'str'];echo $name;去掉,因为这个php实际上表现为一个图片,你echo是不会有值的 最后填一句 $_SESSION[ 'str'] = $str;把这个文件保存为checkimg.php 然后,新建一个同级目录下的php文件 a.php 如下:&lt;?php session_start();?&gt; 验证码是:&lt;?echo $_SESSION["str"];?

thinkphp验证码(支持图片和base64)

配置 config文件夹下新建captcha.php 加入配置信息 调用加密并生成验证码(在thinkphp的验证码基础上修改的)调用解密 加密包 firebase/php-jwt 原插件地址 https://github.com/top-think/think-captcha/tree/3.0/src

实现php中图形验证码刷新的问题

所以url就不同,所以每次浏览器都会对验证码图片发起新的访问,达到刷新验证码的功能无论是img.src = "imgcode.php?"+Math.random();还是imgcode.php?tm="+Math.random();都是为了不要使用浏览器中图片缓存其中tm没有任何意思,你可以随便取你想要的名字甚至就像第一种情况不用给名字 ...

php图片验证码 php识别图片验证码 php验证码图片显示不出来 php保存验证码图片 php验证码源码 php生成验证码的步骤 图片验证码 图片验证码不显示 为什么验证码图片显示不出来
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
沈阳浑南烧烤的地点在哪里? 浑南烧烤饭店都有哪些推荐? 沈阳浑南区的烧烤都有哪些优势亮点? 请问这是鲫鱼鲤鱼还是草鱼?如何区分? 大灾变狼人我到底选哪个职业好呢? 请教台服大灾变前夕德鲁伊天赋加点 玩过台服的兄弟们,说说4.2鸟德和野德PVP怎么样!!! 大灾变玩牧师好还是德鲁伊好啊? 台服小德练级点什么天赋? 大灾变小德玩什么天赋好 php中生成图片验证码问题 怎么用php生成图像,生成验证码 PHP图形验证码识别 PHP 绘制网站登录首页图片验证码 雨刷怎么换 汽车雨刷如何更换? 什么情况下需要更换雨刮器? 雨刮器可以自己换吗? 汽车雨刮器一般多久换一次?为什么? 更换雨刮的步骤? 怎么更换雨刷器? 车子雨刮器怎么拆卸下来更换呢? 怎样换汽车雨刮 车上的雨刮器坏了,自己换新的要注意些什么? 汽车雨刷可以自己换吗? 怎样换雨刮器? 更换雨刷器的步骤? 汽车雨刮器如何更换? 如何更换雨刷器? 鸡肉加什么煮汤 实现php中图形验证码刷新的问题 求PHP 图片验证码类 给出详细调用方法 谢谢!!! php图片验证码,为什么非要加上ob_clean();这句话才能正常显示呢?_百度... php图片验证码问题,我把图片验证码隐藏之后,验证码怎么不能刷新了,而... PHP写的图形验证码乱码 求助!!在php中想实现图片验证码的效果 PHP图片验证码与输入验证不同步 php 图像验证码无法显示图片 php图片验证码问题 php 验证码类,怎么改变验证码形状 php网页提交表单时如何应用图片验证码 PHP求救!!一个关于图形验证码的问题。 插入php图片验证码后,递交时候写判断代码? 如何用PHP写图片验证码验证代码 移动宽带海信电视机怎么看湖州在线空中课堂? 海信电视怎么上国家中小学网课 海信电视无线网络怎样收看空中课堂? 海信电视怎么弄空中课堂? 海信电视如何看广西空中课堂? 海信电视怎么才能搜到枣庄空中课堂?