php验证码功能源码分享

 时间:2024-10-13 11:58:25

1、php原生代码实现验证码功能所需的脑栲葱蛸函数:1.header('Content-type:image/jpeg'像粜杵泳):告诉浏览器输出的是图像。(一般放在最顶部,前面不能写入任何php代码)。2.创建图像:imagecreatetruecolor();3.填充颜色:imagecolorallocate();4.区域填充:imagefill();5.矩形函数:imagerectangle();6.像素函数:imagesetpixel();7.线段函数:imageline();8.数组函数:array();9.图像写入文本函数:imagettftext();10.输出图像函数:imagejpeg();11.释放图像内存函数:imagedestroy();

2、首先头部header函数声明输出的是图像而不是文本header('Content-type:image/jpeg');

3、创建图像:$width = 120;$height = 40;$img = imagecreatetruecolor($width, $height);

4、创建多个颜色代码:背景颜色,边框颜色,背景杂色颜色,验证码字符颜色背景颜色$colorBg = imagecol泠贾高框orallocate($img, rand(200,255), rand(200,255), rand(200,255));边框颜色,随机$colorBorder = imagecolorallocate($img, rand(200,255), rand(200,255), rand(200,255));背景小点颜色$colorDian = imagecolorallocate($img,rand(100,200),rand(100,200),rand(100,200));验证码字符颜色$colorString = imagecolorallocate($img,rand(10,100),rand(10,100),rand(10,100));

5、验证码背景颜色区域填充:imagefill($img, 0, 0, $colorBg);

6、画一个矩形imagerectangle($img, 0,0, $width-1, $height-1, $colorBorder);

7、画多个小点,做为背景杂色for($i=0;$i<500;$i++){imagesetpixel($img, rand(0,$width-1), rand(0,$height-1),$colorDian );}

8、画多条线段for($y=0;$y<5;$y++){imageline($img, rand(0,$width/4), rand(0,$height-1), rand($width/4*3,$width-1), rand(0,$height-1),imagecolorallocate($img,rand(100,200),rand(100,200),rand(100,200)));};

9、验证码字符串数组$element =array('a','b','c媪青怍牙','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');$element_ = '';for($i=0;$i<4;$i++){$element_ =$element_ . $element[rand(0,count($element)-1)];}

10、图像写入文本函数imagettftext($img, 34, rand(-5,5), 5, rand(30,39), $colorString, 'font/yanzhengma2.otf', $element_);

11、输出图像imagejpeg($img);

12、释放图像内存imagedestroy($img);

13、完整代码:<?php//验证码实现header('Content-type:image/jpeg');$width = 120;$height = 40;//创建图像$i罪焐芡拂mg = imagecreatetruecolor($width, $height);//背景颜色$colorBg = imagecolorallocate($img, rand(200,255), rand(200,255), rand(200,255));//边框颜色,随机$colorBorder = imagecolorallocate($img, rand(200,255), rand(200,255), rand(200,255));//背景小点颜色$colorDian = imagecolorallocate($img,rand(100,200),rand(100,200),rand(100,200));//验证码字符颜色$colorString = imagecolorallocate($img,rand(10,100),rand(10,100),rand(10,100));//区域填充imagefill($img, 0, 0, $colorBg);//画一个矩形imagerectangle($img, 0,0, $width-1, $height-1, $colorBorder);//画多个小点for($i=0;$i<500;$i++){imagesetpixel($img, rand(0,$width-1), rand(0,$height-1),$colorDian );}//画一条线段for($y=0;$y<5;$y++){imageline($img, rand(0,$width/4), rand(0,$height-1), rand($width/4*3,$width-1), rand(0,$height-1),imagecolorallocate($img,rand(100,200),rand(100,200),rand(100,200)));};//验证码字符串数组$element =array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');$element_ = '';for($i=0;$i<4;$i++){$element_ =$element_ . $element[rand(0,count($element)-1)];}//验证码字符串/*不用这个函数imagestring($img, 5, 0, 0, 'abcd', $colorString);*///图像写入文本函数imagettftext($img, 34, rand(-5,5), 5, rand(30,39), $colorString, 'font/yanzhengma2.otf', $element_);//输出图像imagejpeg($img);//释放图像内存imagedestroy($img);?>

14、效果

  • jquery如何删除父元素
  • Visual Studio Code怎么设置鼠标后退向前导航
  • jquery如何改变文本框的宽和高
  • Ubuntu如何设置自动开启小键盘
  • 易语言PID取进程路径
  • 热门搜索
    战争与和平手抄报 反邪教手抄报图片大全 数学手抄报内容大全 五年级手抄报 国庆小报手抄报 中秋节的手抄报简单又漂亮 防火安全手抄报 以感恩为主题的手抄报 小学手抄报大全 感恩教师的手抄报