关键词搜索

源码搜索 ×
×

PHP笔记-验证码例子

发布2022-02-05浏览803次

详情内容

注意需要先把php_gd2.dll放开:

php.ini文件修改。

如下验证码效果:

代码如下:

Captcha.php

  1. <?php
  2. namespace vendor;
  3. class Captcha{
  4. public static function getCaptcha($width = 450, $height = 65, $length = 4, $fonts = ""){
  5. if(empty($fonts)){
  6. $fonts = 'captcha.ttf';
  7. }
  8. $fonts = __DIR__ . "/fonts/" . $fonts;
  9. $img = imagecreatetruecolor($width, $height);
  10. $bgColor = imagecolorallocate($img, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
  11. imagefill($img, 0, 0, $bgColor);
  12. // //增加干扰
  13. for($i = 0; $i < 50; $i++){
  14. $dotsColor = imagecolorallocate($img, mt_rand(140, 190), mt_rand(140, 190), mt_rand(140, 190));
  15. imagestring($img,mt_rand(1, 5), mt_rand(0, $width), mt_rand(0, $height), "*", $dotsColor);
  16. }
  17. for($i = 0; $i < 15; $i++){
  18. $lineColor = imagecolorallocate($img, mt_rand(80, 130), mt_rand(80, 130), mt_rand(80, 130));
  19. imageline($img, mt_rand(0, $width), mt_rand(0, $height), mt_rand(0, $width), mt_rand(0, $height), $lineColor);
  20. }
  21. //
  22. $captcha = self::getString($length);
  23. @session_start();
  24. $_SESSION["captcha"] = $captcha;
  25. for($i = 0; $i < $length; $i++){
  26. $cColor = imagecolorallocate($img, mt_rand(15, 25), mt_rand(15, 25), mt_rand(15, 25));
  27. imagettftext($img, mt_rand(15, 25), mt_rand(-45, 45), $width / ($length + 1) * ($i + 1),
  28. mt_rand(25, $height -25), $cColor, $fonts, $captcha[$i]);
  29. }
  30. header("Content-type:image/png");
  31. imagepng($img);
  32. imagedestroy($img);
  33. }
  34. private static function getString($length = 4): string{
  35. $captcha = "";
  36. for($i = 0; $i < $length; $i++){
  37. switch(mt_rand(1, 3)){
  38. case 1: //49-57代表1-9
  39. $captcha .= chr(mt_rand(49, 57));
  40. break;
  41. case 2: //65-90代表a-z
  42. $captcha .= chr(mt_rand(65, 90));
  43. break;
  44. case 3: //97-122代表A-Z
  45. $captcha .= chr(mt_rand(97, 122));
  46. break;
  47. }
  48. }
  49. return $captcha;
  50. }
  51. }

这里我的调用是这样的:

  1. public function captcha(){
  2. Captcha::getCaptcha();
  3. }

就可以了。

相关技术文章

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载