code.php 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. <?php
  2. /**
  3. * 验证码:
  4. *
  5. */
  6. session_start();
  7. header('Content-type: image/png');
  8. $imageType = 1;
  9. $codeLen = 4;
  10. $type = 2;
  11. $code = getCode($type,$codeLen);
  12. //第一步:创建一个画布;
  13. $im = imagecreatetruecolor(100,40);
  14. $bgcolor = imagecolorallocate($im,230,230,230);
  15. $red = imagecolorallocate($im,123,0,0);
  16. //第二步:开始绘图;
  17. imagefill($im,0,0,$bgcolor);
  18. //给像素点;
  19. for($i=0;$i<200;$i++){
  20. $color = imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));
  21. imagesetpixel($im,rand(0,100),rand(0,40),$color);
  22. }
  23. //给一些直线;
  24. // for($i=0;$i<4;$i++){
  25. // $color = imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));
  26. // imageline($im,rand(5,30),rand(5,30),rand(60,90),rand(5,30),$color);
  27. // }
  28. //给验证码:让每个字符都有可能是不一样的;
  29. for($i=0;$i<$codeLen;$i++){
  30. $color = imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));
  31. imagettftext($im,20,rand(10,20),(20*$i+20),30,$color,"simsun.ttc",$code[$i]);
  32. }
  33. //第三步:输出图像;
  34. if($imageType==1){
  35. imagejpeg($im);
  36. }else if($imageType==2){
  37. imagepng($im);
  38. }else if($imageType==3){
  39. imagegif($im);
  40. }
  41. //销毁图像;
  42. imagedestroy($im);
  43. function getCode($type=1,$codeLen){
  44. $str = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
  45. //判断要不要数字或字母;
  46. if($type==1){
  47. $len = 10;
  48. }else if($type==2){
  49. $len = 36;
  50. }else if($type==3){
  51. $len = strlen($str);
  52. }
  53. $code = "";
  54. $code = $str[rand(0,$len-1)];//产生一个
  55. for($i=0;$i<$codeLen-1;$i++){
  56. for(;;){
  57. //获取一个随机的字符;
  58. $value = $str[rand(0,$len-1)];
  59. //判断是否重复;
  60. if(substr_count($code,$value)==0){//统计一个字符在字符串中出现的次数;
  61. $code .= $value;
  62. break;
  63. }
  64. }
  65. }
  66. // $session = Yii::$app->session;
  67. // $session->set('code', $code);
  68. $_SESSION['code'] = $code;
  69. return $code;
  70. }