当前位置:Gxlcms > PHP教程 > php完整验证码代码php生成验证码php短信验证码php验证码代

php完整验证码代码php生成验证码php短信验证码php验证码代

时间:2021-07-01 10:21:17 帮助过:23人阅读

  1. <!--?<span-->php
  2. <span>require_once</span> 'string.func.php'<span>;
  3. </span><span>//</span><span>通过GD库做验证码</span><span>/*</span><span>*
  4. *添加验证文字
  5. * @param int $type
  6. * @param int $length
  7. </span><span>*/</span><span>function</span> buildRandomString(<span>$type</span>=1,<span>$length</span>=4<span>){
  8. </span><span>$row</span>=''<span>;
  9. </span><span>if</span>(<span>$type</span>==1<span>){
  10. </span><span>$row</span>=<span>join</span>('',<span>range</span>(0, 9<span>));
  11. }</span><span>else</span><span>if</span>(<span>$type</span>==2<span>){
  12. </span><span>$row</span>=<span>join</span>('', <span>array_merge</span>(<span>range</span>('a','z'),<span>range</span>('A', 'Z'<span>)));
  13. }</span><span>else</span><span>if</span>(<span>$type</span>==3<span>){
  14. </span><span>$row</span>=<span>join</span>('', <span>array_merge</span>(<span>range</span>('a','z'),<span>range</span>('A', 'Z'),<span>range</span>(0, 9<span>)));
  15. };
  16. </span><span>$row</span>=<span>str_shuffle</span>(<span>$row</span><span>);
  17. </span><span>$row</span>=<span>substr</span>(<span>$row</span>,0,<span>$length</span><span>);
  18. </span><span>return</span><span>$row</span><span>;
  19. }
  20. </span><span>/*</span><span>*
  21. * 生成缩略图
  22. * @param int $type //包含数字或者英文
  23. * @param int $length 多少个字符
  24. * @param int $pixel 干扰小点的密度
  25. * @param int $dst_h 干扰线的密度
  26. * @param string //验证码在$_SESSION中的名字
  27. </span><span>*/</span><span>function</span> verifyImage(<span>$type</span>=1,<span>$length</span>=4,<span>$pixel</span>=0,<span>$line</span>=0,<span>$sess_name</span> = "verify"<span>){
  28. </span><span>//</span><span>session_start();
  29. //创建画布</span><span>$width</span> = 100<span>;
  30. </span><span>$height</span> = 40<span>;
  31. </span><span>$image</span> = imagecreatetruecolor ( <span>$width</span>, <span>$height</span><span> );
  32. </span><span>$white</span> = imagecolorallocate ( <span>$image</span>, 255, 255, 255<span> );
  33. </span><span>$black</span> = imagecolorallocate ( <span>$image</span>, 0, 0, 0<span> );
  34. </span><span>//</span><span>用填充矩形填充画布</span> imagefilledrectangle ( <span>$image</span>, 1, 1, <span>$width</span> - 2, <span>$height</span> - 2, <span>$white</span><span> );
  35. </span><span>$chars</span> = buildRandomString ( <span>$type</span>, <span>$length</span><span> );
  36. </span><span>$_SESSION</span> [<span>$sess_name</span>] = <span>$chars</span><span>;
  37. </span><span>//</span><span>$fontfiles = array ("MSYH.TTF", "MSYHBD.TTF", "SIMLI.TTF", "SIMSUN.TTC", "SIMYOU.TTF", "STZHONGS.TTF" );</span><span>$fontfiles</span> = <span>array</span> ("SIMKAI.TTF"<span> );
  38. </span><span>//</span><span>由于字体文件比较大,就只保留一个字体,如果有需要的同学可以自己添加字体,字体在你的电脑中的fonts文件夹里有,直接运行输入fonts就能看到相应字体</span><span>for</span>(<span>$i</span> = 0; <span>$i</span> < <span>$length</span>; <span>$i</span> ++<span>) {
  39. </span><span>$size</span> = <span>mt_rand</span> ( 14, 18<span> );
  40. </span><span>$angle</span> = <span>mt_rand</span> ( - 15, 15<span> );
  41. </span><span>$x</span> = 5 + <span>$i</span> * <span>$size</span><span>;
  42. </span><span>$y</span> = <span>mt_rand</span> ( 20, 26<span> );
  43. </span><span>$fontfile</span> = "../fonts/" . <span>$fontfiles</span> [<span>mt_rand</span> ( 0, <span>count</span> ( <span>$fontfiles</span> ) - 1<span> )];
  44. </span><span>$color</span> = imagecolorallocate ( <span>$image</span>, <span>mt_rand</span> ( 50, 90 ), <span>mt_rand</span> ( 80, 200 ), <span>mt_rand</span> ( 90, 180<span> ) );
  45. </span><span>$text</span> = <span>substr</span> ( <span>$chars</span>, <span>$i</span>, 1<span> );
  46. imagettftext ( </span><span>$image</span>, <span>$size</span>, <span>$angle</span>, <span>$x</span>, <span>$y</span>, <span>$color</span>, <span>$fontfile</span>, <span>$text</span><span> );
  47. }
  48. </span><span>if</span> (<span>$pixel</span><span>) {
  49. </span><span>for</span>(<span>$i</span> = 0; <span>$i</span> < 50; <span>$i</span> ++<span>) {
  50. imagesetpixel ( </span><span>$image</span>, <span>mt_rand</span> ( 0, <span>$width</span> - 1 ), <span>mt_rand</span> ( 0, <span>$height</span> - 1 ), <span>$black</span><span> );
  51. }
  52. }
  53. </span><span>if</span> (<span>$line</span><span>) {
  54. </span><span>for</span>(<span>$i</span> = 1; <span>$i</span> < <span>$line</span>; <span>$i</span> ++<span>) {
  55. </span><span>$color</span> = imagecolorallocate ( <span>$image</span>, <span>mt_rand</span> ( 50, 90 ), <span>mt_rand</span> ( 80, 200 ), <span>mt_rand</span> ( 90, 180<span> ) );
  56. imageline ( </span><span>$image</span>, <span>mt_rand</span> ( 0, <span>$width</span> - 1 ), <span>mt_rand</span> ( 0, <span>$height</span> - 1 ), <span>mt_rand</span> ( 0, <span>$width</span> - 1 ), <span>mt_rand</span> ( 0, <span>$height</span> - 1 ), <span>$color</span><span> );
  57. }
  58. }
  59. </span><span>header</span> ( "content-type:image/gif"<span> );
  60. imagegif ( </span><span>$image</span><span> );
  61. imagedestroy ( </span><span>$image</span><span> );
  62. }</span>

主要要点:1、如果前面没有申明session_start();则需要申明;2、字体可以在cmf输入fonts下载到自己定义的fonts文件夹;3、$_SESSION [$sess_name]可以通过$_POST获得用户输入的验证码进行比较。

以上就介绍了php完整验证码代码,包括了php,验证码方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

人气教程排行