define('EmpireCMSAdmin','1');

define('EmpireCMSAPage','login');

define('EmpireCMSNFPage','1');

require('../class/connect.php');

//绘制居中文本, 对于GD的内置字体

function pc_ImageStringCenter($image,$text,$font){

//字体大小

$width = array(1=>5,6,7,8,9);

$height = array(1=>6,8,13,15,15);

//计算图像大小

$xi = imagesx($image);

$yi = imagesy($image);

//计算文本大小

$xr = $width[$font] * strlen($text);

$yr = $height[$font];

//计算中心点的位置

$x=intval(($xi-$xr)/2);

$y=intval(($yi-$yr)/2);

return array($x,$y);

}

//取得随机数

function domake_password($pw_length){

global $public_r;

//验证码字符组成,0数字,1字母,2数字+字母

if($public_r["keytog"]==1)

{

$low_ascii_bound=65;

$upper_ascii_bound=90;

$notuse=array(73,79);

}

elseif($public_r["keytog"]==2)

{

$low_ascii_bound=50;

$upper_ascii_bound=90;

//过滤一些特殊符号和容易看错的字母

//58(:) 59(;) 60() 63(?) 64(@) 73(I) 76(L) 79(O)

$notuse=array(58,59,60,61,62,63,64,73,76,79);

}

else

{

$low_ascii_bound=48;

$upper_ascii_bound=57;

$notuse=array(48,49);

}

while($i

if(PHP_VERSION

{

mt_srand((double)microtime()*1000000);

}

$randnum=mt_rand($low_ascii_bound,$upper_ascii_bound);

if(!in_array($randnum,$notuse))

{

$password1=$password1.chr($randnum);

$i++;

}

}

return $password1;

}

//返回颜色

function ReturnShowKeyColor($img){

global $public_r;

//背景色

if($public_r["keybgcolor"])

{

$bgcr=ToReturnRGB($public_r["keybgcolor"]);

$r["bgcolor"]=imagecolorallocate($img,$bgcr[0],$bgcr[1],$bgcr[2]);

}

else

{

$r["bgcolor"]=imagecolorallocate($img,7,27,63);

}

//文字色

if($public_r["keyfontcolor"])

{

$fcr=ToReturnRGB($public_r["keyfontcolor"]);

$r["fontcolor"]=ImageColorAllocate($img,$fcr[0],$fcr[1],$fcr[2]);

}

else

{

$r["fontcolor"]=ImageColorAllocate($img,255,255,255);

}

//干扰色

if($public_r["keydistcolor"])

{

$dcr=ToReturnRGB($public_r["keydistcolor"]);

$r["distcolor"]=ImageColorAllocate($img,$dcr[0],$dcr[1],$dcr[2]);

}

else

{

$r["distcolor"]=ImageColorAllocate($img,255,255,255);

}

return $r;

}

//显示验证码

function ShowKey($v){

$vname=ecmsReturnKeyVarname($v);

//取得四位随机验证码

$key=strtolower(domake_password(4));

//设置验证码

ecmsSetShowKey($vname,$key,0);

//是否支持gd库

if(function_exists("imagegif"))

{

header("Content-type:image/gif");

$img=imagecreate(60,32);

$colorr=ReturnShowKeyColor($img);

$bgcolor=$colorr["bgcolor"];

$fontcolor=$colorr["fontcolor"];

$distcolor=$colorr["distcolor"];

imagefill($img,0,0,$bgcolor);

list($x,$y)=pc_ImageStringCenter($img,$key,5);

imagestring($img,5,$x,$y,$key,$fontcolor);

//for($i=0;$i<90;$i++)

//{

//imagesetpixel($img,rand()%70,rand()%30,$distcolor);

//}

imagegif($img);

imagedestroy($img);

}

elseif(function_exists("imagepng"))

{

header("Content-type:image/png");

$img=imagecreate(50,26);

$colorr=ReturnShowKeyColor($img);

$bgcolor=$colorr["bgcolor"];

$fontcolor=$colorr["fontcolor"];

$distcolor=$colorr["distcolor"];

imagefill($img,0,0,$bgcolor);

imagestring($img,5,6,3,$key,$fontcolor);

for($i=0;$i<90;$i++)

{

imagesetpixel($img,rand()%70,rand()%30,$distcolor);

}

imagepng($img);

imagedestroy($img);

}

elseif(function_exists("imagejpeg"))

{

header("Content-type:image/jpeg");

$img=imagecreate(50,26);

$colorr=ReturnShowKeyColor($img);

$bgcolor=$colorr["bgcolor"];

$fontcolor=$colorr["fontcolor"];

$distcolor=$colorr["distcolor"];

imagefill($img,0,0,$bgcolor);

imagestring($img,5,6,3,$key,$fontcolor);

for($i=0;$i<90;$i++)

{

imagesetpixel($img,rand()%70,rand()%30,$distcolor);

}

imagejpeg($img);

imagedestroy($img);

}

elseif(function_exists("imagewbmp"))

{

header("Content-type:image/vnd.wap.wbmp");

$img=imagecreate(50,26);

$colorr=ReturnShowKeyColor($img);

$bgcolor=$colorr["bgcolor"];

$fontcolor=$colorr["fontcolor"];

$distcolor=$colorr["distcolor"];

imagefill($img,0,0,$bgcolor);

imagestring($img,5,6,3,$key,$fontcolor);

for($i=0;$i<90;$i++)

{

imagesetpixel($img,rand()%70,rand()%30,$distcolor);

}

imagewbmp($img);

imagedestroy($img);

}

else

{

ecmsSetShowKey($vname,"ecms",0);

echo ReadFiletext("../data/images/ecms.jpg");

}

}

//返回变量名

function ecmsReturnKeyVarname($v){

$name="checkkey";

return $name;

}

$v=$_GET["v"];

ShowKey($v);

?>

php 验证码字体居中,自定义验证码图片的宽高后文本垂直水平居中[帝国cms ShowKey.php]-网站程序网...相关推荐

  1. android 自定义本地验证码demo,Android 自定义验证码输入框的实例代码(支持粘贴连续性)...

    需求 1.能自定义输入框个数和样式 2.支持长按粘贴或剪切板内容自动填充(粘贴连续性) 其中第2点是最为重要的,正是其他人没有这点,逼得自己弄一个 示例 别人的示例: 粘贴居然不支持连续性,只能粘贴第 ...

  2. 帝国html5图片站模板,html5响应式自适应帝国CMS整站模板源码瀑布流文章图片资讯文章站...

    版本更新 模板已经适配到最新帝国CMS7.5(部分早期源码模板没有适配到最新)!截止2019-持续追踪更新针对机房黑产利用,和帝国CMS一个XS漏洞利用方法的堵截!正式版已补,请已运营的小伙伴找我查看 ...

  3. 注册与验证码php源代码,PHP验证码处理源代码

    /** * 安全的验证码要:验证码文字扭曲.旋转,使用不同字体,添加干扰码. * @原作者: 流水孟春 * @修 改: flymorn **/ class YL_Security_Secoder { ...

  4. php验证码大全(实例分享),php图片验证码的例子

    代码如下: /** * 生成验证码图片 * site www.jbxue.com * @param String $word 验证码在session中的变量名称 */ function valiCod ...

  5. SpringBoot之自定义验证码

    代码地址如下: http://www.demodashi.com/demo/14280.html 项目介绍 Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问 ...

  6. 自定义验证码输入控件

    控件代码深度参考了掘金文章 Android仿滴滴出行验证码输入框效果,增加了 setText() 方法 控件采用多个横向排列的 EditText 组合控件来实现验证码录入框. 自定义属性文件 attr ...

  7. 后端生成图片验证码,Kotlin生成图片验证码,Java生成图片验证码,图片验证码的生成和校验

    后端生成图片验证码 注:以下代码主要使用kotlin进行编写,kotlin可兼容java,可以直接使用.IDEA也支持将java与kotlin代码进行互相转换. 1.引入依赖: Gradle(若你使用 ...

  8. 图片验证码和短信验证码开发

    图片验证码和短信验证码开发 tip :前后端分离,先开发后端,后完善前端 一.图片验证码流程 1.引入captcha包放入utils 不是独立的第三方包放入utils,独立的包放入libs里面 cap ...

  9. 爬虫笔记40之反爬系列三:复杂验证码的处理(12306图片验证码、行为验证:selenium鼠标行为链 + 算法)

    一.12306图片验证码 ​ 解决方案: selenium(鼠标行为链) + 打码平台 ​ 思路: 通过selenium来加载登录页面,获取验证码图片.我就可以把验证码图片交给超级鹰打码平台进行处理. ...

最新文章

  1. 用Cordova打包Vue-vux项目
  2. c语言330转化成字符,c语言同步练习(330份).doc
  3. 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个...
  4. 安全的 ActiveMQ
  5. 计算勒让德多项式系数的第二种方法
  6. ABAP入门培训8讲
  7. Altium Designer中敷铜间距修改问题
  8. Linux bash卸载软件,Ubuntu卸载软件的4种方法
  9. 基于Pytorch实现CNN卷积神经网络-Mnist数据集
  10. 简单java数组程序_最简单易懂的java数组排序方法整理
  11. 通过池塘配置ip实验
  12. 2010年郑州注册物业管理师培训
  13. Java牛客网输入测试用例
  14. 编写iptables模块实现不连续IP地址的DNAT-POOL
  15. GNSS观测方程及线性组合
  16. 如何恢复小强中被修改的软件包
  17. 算法导论中英文版下载
  18. jquery 表格分页等操作实现代码(pagedown,pageup)
  19. 虚拟天文台主节点成功上云
  20. 解读平高球动作要领,平高球怎么打

热门文章

  1. Spring Boot 企业实战_前夕
  2. 去除VScode中的黄色警告波浪线问题
  3. linux中ssh启动报错,Linux(Ubuntu18)中启动ssh时的报错
  4. python的程序格式框架_关于Python程序格式框架的描述,以下选项中错误的是
  5. 计算机软件复用意义何在,2009计算机科学技术导论复习要点.pdf
  6. java怎么用doss窗口_GitHub - doss128/symphony: 一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)平台。...
  7. html清楚css的影响,08、清除浮动的影响.html
  8. ctf mysql hash传递_分享个 CTF 小工具 bruteHASH
  9. c语言中buf内容怎么给指针,C语言 指针的使用
  10. 运维工程师是桥的护栏_【消息】秭归将建螺旋桥