请选择 进入手机版 | 继续访问电脑版

php生成简单验证码代码案例

[复制链接]
查看1860 | 回复0 | 2020-11-25 10:09 | 显示全部楼层 |阅读模式
php生成简单验证码代码案例
  1. <?php
  2. //第一步:创建随机字符串
  3. //1.1  创建字符数组
  4. $all_array=array_merge(range('a','z'),range('A','Z'),range(0,9));        //所有字符数组
  5. $div_array=['1','l','0','o','O','I'];        //去除容易混淆的字符
  6. $array=array_diff($all_array,$div_array);        //剩余的字符数组
  7. unset($all_array,$div_array);                //销毁不需要使用的数组
  8. //1.2        随机获取4个字符
  9. $index=array_rand($array,4);        //随机取4个字符,返回字符下标,按先后顺序排列
  10. shuffle($index);        //打乱字符
  11. //1.3        通过下标拼接字符串
  12. $code='';
  13. foreach($index as $i){
  14.         $code.=$array[$i];
  15. }
  16. //第二步:创建画布
  17. $img=imagecreate(150,30);
  18. imagecolorallocate($img,255,0,0);                        //分配背景色
  19. $color=imagecolorallocate($img,255,255,255);        //分配前景色
  20. //第三步:将字符串写到画布上
  21. $font=5;                //内置5号字体
  22. $x=(imagesx($img)-imagefontwidth($font)*strlen($code))/2;
  23. $y=(imagesy($img)-imagefontheight($font))/2;
  24. imagestring($img,$font,$x,$y,$code,$color);
  25. //显示验证码
  26. header('content-type:image/gif');
  27. imagegif($img);
复制代码
小结
  • range():生成指定范围的数组
  • array_merge():合并数组
  • array_diff():计算数组的差集
  • array_rand():随机获取数组元素
  • shuffle():打乱数组
  • 去除容易混淆的字符
  • 数组要打乱
  • 起始点x=(图片宽度-字符串宽度)/2        字符串宽度=字符的宽度*字符的个数
  • 起始点y=(图片高度-字符高度)/2

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

UID
1
贡献
387
丢币
38902
主题
4607
回帖
116
注册时间
2018-9-25
最后登录
2024-3-24