Maison développement back-end tutoriel php 验证码PHP类 支持数字,字母,汉字,混合

验证码PHP类 支持数字,字母,汉字,混合

Jul 25, 2016 am 08:46 AM

  1. // +------------------------------------------------------------------------
  2. // 验证码类,该类的对象能动态获取验证码图片,验证码字符保存在SESSION['code']中
  3. // +------------------------------------------------------------------------
  4. // 支持4种格式 数字 字母 汉字 混合
  5. // +------------------------------------------------------------------------
  6. // @Author: HelloChina(sanzi0930@163.com)
  7. // +------------------------------------------------------------------------
  8. // @Date: 2012年6月7日11:03:00
  9. // +------------------------------------------------------------------------
  10. // @version 1.0
  11. // +------------------------------------------------------------------------
  12. class Vcode{
  13. protected $width; //验证码宽度
  14. protected $height; //验证码长度
  15. protected $codeNum; //验证码字符个数
  16. protected $codeType; //验证码类型
  17. protected $fontSize; //字符大小
  18. protected $fontType; //字体类型
  19. protected $codeStr; //中文内容
  20. protected $strNum; //中文个数
  21. protected $imageType; //输出图片类型
  22. protected $image; //图片资源
  23. protected $checkCode; //验证码内容
  24. /**
  25. +--------------------------------------------------------------------------------
  26. * 取得验证码信息
  27. +--------------------------------------------------------------------------------
  28. * @param integer $width 验证码宽度
  29. * @param integer $height 验证码高度
  30. * @param integer $codeNum 验证码字符个数
  31. * @param integer $codeType 验证码字符类型 1为数字 2为字母 3为汉字 4为混编
  32. * @param integer $fontSize 验证码字体的大小
  33. * @param string $fontType 验证码字体类型
  34. * @param string $imageType 验证码输出图片类型
  35. * @param string $codestr 中文验证码内容
  36. +--------------------------------------------------------------------------------
  37. */
  38. public function __construct($width=100, $height=50, $codeNum=4, $codeType=4, $fontSize=12, $fontType='heiti.ttf' ,$imageType='jpeg', $codeStr='去我饿人他一哦平啊是的飞个好就看了在想才吧你吗'){
  39. $this->width = $width;
  40. $this->height = $height;
  41. $this->codeNum = $codeNum;
  42. $this->codeType = $codeType;
  43. $this->fontSize = $fontSize;
  44. $this->fontType = $fontType;
  45. $this->codeStr = $codeStr;
  46. $this->strNum = strlen($this->codeStr)/3-1;
  47. $this->imageType = $imageType;
  48. $this->checkCode = $this->getCheckCode();
  49. }
  50. //+--------------------------------------------------------------------------------
  51. //* 生成验证码字符
  52. //+--------------------------------------------------------------------------------
  53. //* @return string
  54. //+--------------------------------------------------------------------------------
  55. public function __toString(){
  56. $string = implode('', $this->getCheckCode());
  57. $_SESSION["code"]=$string; //加到session中
  58. $this->getImage(); //输出验证码
  59. return '';
  60. }
  61. protected function getCheckCode(){
  62. $string = array();
  63. switch($this->codeType){
  64. case 1:
  65. //数字字符串
  66. $string = array_rand(range(0,9), $this->codeNum);
  67. break;
  68. case 2:
  69. //大字母字符串
  70. $string = array_rand(array_flip(range('A', 'Z')), $this->codeNum);
  71. break;
  72. case 3:
  73. //汉字字符串
  74. for($i=0; $icodeNum); $i++){
  75. $start = mt_rand(0, $this->strNum);
  76. $string[$i]= self::msubstr($this->codeStr,$start);
  77. }
  78. break;
  79. case 4:
  80. //混合字符串
  81. for($i=0; $icodeNum); $i++){
  82. $rand=mt_rand(0,2);
  83. switch($rand){
  84. case 0:
  85. $ascii = mt_rand(48,57);
  86. $string[$i] = sprintf('%c',$ascii);
  87. break;
复制代码

验证码, PHP
本主题由 小贝 于 2015-11-18 08:23 移动


Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Article chaud

Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Article chaud

Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Les sous-titres Stremio ne fonctionnent pas ; erreur lors du chargement des sous-titres Les sous-titres Stremio ne fonctionnent pas ; erreur lors du chargement des sous-titres Feb 24, 2024 am 09:50 AM

Les sous-titres Stremio ne fonctionnent pas ; erreur lors du chargement des sous-titres

Programme C++ : réorganiser la position des mots par ordre alphabétique Programme C++ : réorganiser la position des mots par ordre alphabétique Sep 01, 2023 pm 11:37 PM

Programme C++ : réorganiser la position des mots par ordre alphabétique

Comment utiliser Golang pour déterminer si un caractère est une lettre Comment utiliser Golang pour déterminer si un caractère est une lettre Dec 23, 2023 pm 04:09 PM

Comment utiliser Golang pour déterminer si un caractère est une lettre

Le code interne d'un caractère chinois nécessite plusieurs octets pour être stocké Le code interne d'un caractère chinois nécessite plusieurs octets pour être stocké Dec 14, 2020 pm 05:45 PM

Le code interne d'un caractère chinois nécessite plusieurs octets pour être stocké

Comment utiliser Golang pour déterminer si un caractère est une lettre Comment utiliser Golang pour déterminer si un caractère est une lettre Dec 23, 2023 am 11:57 AM

Comment utiliser Golang pour déterminer si un caractère est une lettre

Compréhension approfondie du principe de conversion des caractères chinois en codage UTF-8 en PHP Compréhension approfondie du principe de conversion des caractères chinois en codage UTF-8 en PHP Mar 28, 2024 pm 02:44 PM

Compréhension approfondie du principe de conversion des caractères chinois en codage UTF-8 en PHP

Solution au problème de saisie des caractères chinois dans Win11 Solution au problème de saisie des caractères chinois dans Win11 Jan 05, 2024 am 08:29 AM

Solution au problème de saisie des caractères chinois dans Win11

Maîtriser les compétences de traitement PHP du transcodage des caractères chinois Maîtriser les compétences de traitement PHP du transcodage des caractères chinois Mar 28, 2024 pm 03:47 PM

Maîtriser les compétences de traitement PHP du transcodage des caractères chinois

See all articles