yanzheng.php
上传用户:yttaitong
上传日期:2009-05-10
资源大小:128k
文件大小:5k
源码类别:

WEB源码(ASP,PHP,...)

开发平台:

PHP

  1. <?php
  2. /*
  3.     [BBWPS!] (C)2006-2010 小蜜蜂版权所有.
  4. This is NOT a freeware, use is subject to license terms
  5.     时间:2007年12月
  6.     描述:
  7. */
  8. error_reporting(0);
  9. require("checkModuleSession.php");
  10. $width = "70";
  11. $height = "20";
  12. $len = "4";
  13. $bgcolor = "#ffffff";
  14. $noise = true;
  15. $noisenum = 0;
  16. $border = false;
  17. $bordercolor = "#000000";
  18. for ($i=0;$i<$len;$i++){
  19. $seccode.=mt_rand(0,9);
  20. }
  21. $code =  md5(intval($seccode));
  22. $_SESSION['code']=$code;
  23. bbwpsSetSession("../session/",array("code"=>$code));
  24. $seccode = sprintf('%04d', $seccode);
  25. if(function_exists('imagecreate') && function_exists('imagecolorset') && function_exists('imagecopyresized') && function_exists('imagecolorallocate') && function_exists('imagesetpixel') && function_exists('imagechar') && function_exists('imagecreatefromgif') && function_exists('imagepng')) {
  26. $im = imagecreate($width, $height);
  27. $backgroundcolor = getcolor($bgcolor);
  28. $numorder = array(1, 2, 3, 4);
  29. shuffle($numorder);
  30. $numorder = array_flip($numorder);
  31. for($i = 1; $i <= 4; $i++) {
  32. $imcodefile = './img/'.$seccode[$numorder[$i]].'.gif';
  33. $x = $numorder[$i] * 13 + mt_rand(0, 4) - 2;
  34. $y = mt_rand(0, 3);
  35. if(file_exists($imcodefile)) {
  36. $imcode = imagecreatefromgif($imcodefile);
  37. $data = getimagesize($imcodefile);
  38. imagecolorset($imcode, 0 ,mt_rand(0, 255), mt_rand(0, 128), mt_rand(0, 255));
  39. imagecopyresized($im, $imcode, $x, $y, 0, 0, $data[0] + mt_rand(0, 6) - 3, $data[1] + mt_rand(0, 6) - 3, $data[0], $data[1]);
  40. } else {
  41. $text_color = imagecolorallocate($im, mt_rand(0, 50), mt_rand(0, 50), mt_rand(0, 50));
  42. imagechar($im, 5, $x + 5, $y + 3, $seccode[$numorder[$i]], $text_color);
  43. }
  44. }
  45. $linenums = mt_rand(10, 32);
  46. for($i=0; $i <= $linenums; $i++) {
  47. $linecolor = imagecolorallocate($im, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
  48. $linex = mt_rand(0, 62);
  49. $liney = mt_rand(0, 25);
  50. imageline($im, $linex, $liney, $linex + mt_rand(0, 4) - 2, $liney + mt_rand(0, 4) - 2, $linecolor);
  51. }
  52. if($noise == true) setnoise();
  53. $bordercolor = getcolor($bordercolor);
  54. if($border)imagerectangle($im, 0, 0, 61, 24, $bordercolor);
  55. header('Content-type: image/png');
  56. imagepng($im);
  57. imagedestroy($im);
  58. }else {
  59. $numbers = array
  60. (
  61. 0 => array('3c','66','66','66','66','66','66','66','66','3c'),
  62. 1 => array('1c','0c','0c','0c','0c','0c','0c','0c','1c','0c'),
  63. 2 => array('7e','60','60','30','18','0c','06','06','66','3c'),
  64. 3 => array('3c','66','06','06','06','1c','06','06','66','3c'),
  65. 4 => array('1e','0c','7e','4c','2c','2c','1c','1c','0c','0c'),
  66. 5 => array('3c','66','06','06','06','7c','60','60','60','7e'),
  67. 6 => array('3c','66','66','66','66','7c','60','60','30','1c'),
  68. 7 => array('30','30','18','18','0c','0c','06','06','66','7e'),
  69. 8 => array('3c','66','66','66','66','3c','66','66','66','3c'),
  70. 9 => array('38','0c','06','06','3e','66','66','66','66','3c')
  71. );
  72. for($i = 0; $i < 10; $i++) {
  73. for($j = 0; $j < 6; $j++) {
  74. $a1 = substr('012', mt_rand(0, 2), 1).substr('012345', mt_rand(0, 5), 1);
  75. $a2 = substr('012345', mt_rand(0, 5), 1).substr('0123', mt_rand(0, 3), 1);
  76. mt_rand(0, 1) == 1 ? array_push($numbers[$i], $a1) : array_unshift($numbers[$i], $a1);
  77. mt_rand(0, 1) == 0 ? array_push($numbers[$i], $a1) : array_unshift($numbers[$i], $a2);
  78. }
  79. }
  80. $bitmap = array();
  81. for($i = 0; $i < 20; $i++) {
  82. for($j = 0; $j < 4; $j++) {
  83. $n = substr($seccode, $j, 1);
  84. $bytes = $numbers[$n][$i];
  85. $a = mt_rand(0, 14);
  86. switch($a) {
  87. case 1: str_replace('9', '8', $bytes); break;
  88. case 3: str_replace('c', 'e', $bytes); break;
  89. case 6: str_replace('3', 'b', $bytes); break;
  90. case 8: str_replace('8', '9', $bytes); break;
  91. case 0: str_replace('e', 'f', $bytes); break;
  92. }
  93. array_push($bitmap, $bytes);
  94. }
  95. }
  96. for($i = 0; $i < 8; $i++) {
  97. $a = substr('012', mt_rand(0, 2), 1) . substr('012345', mt_rand(0, 5), 1);
  98. array_unshift($bitmap, $a);
  99. array_push($bitmap, $a);
  100. }
  101. $image = pack('H*', '424d9e000000000000003e000000280000002000000018000000010001000000'.
  102. '0000600000000000000000000000000000000000000000000000FFFFFF00'.implode('', $bitmap));
  103. header('Content-Type: image/bmp');
  104. echo $image;
  105. }
  106. function getcolor($color){
  107. global $im;
  108. $color = eregi_replace ("^#","",$color);
  109. $r = $color[0].$color[1];
  110. $r = hexdec ($r);
  111. $b = $color[2].$color[3];
  112. $b = hexdec ($b);
  113. $g = $color[4].$color[5];
  114. $g = hexdec ($g);
  115. $color = imagecolorallocate ($im, $r, $b, $g);
  116. return $color;
  117. }
  118. function setnoise(){
  119. global $im, $width, $height, $back, $noisenum;
  120. for ($i=0; $i<$noisenum; $i++){
  121. $randColor = imageColorAllocate($im, rand(0, 255), rand(0, 255), rand(0, 255));
  122. imageSetPixel($im, rand(0, $width), rand(0, $height), $randColor);
  123. }
  124. }
  125. ?>