/library/Common/Plugin/ImgCode.php
PHP | 132 lines | 88 code | 12 blank | 32 comment | 13 complexity | 351cb72ac973dd864652a9a8b0a69215 MD5 | raw file
- <?php
- /**
- * ???????
- *
- */
-
- class Common_Plugin_ImgCode extends Zend_Controller_Plugin_Abstract {
-
- /**
- * ???????
- *
- * @static
- * @access public
- *
- * @param string $length ??
- * @param string $mode ?? 0 ?? 1:???2????? 3:???? 4:??????
- * @param string $type ????
- * @param string $width ??
- * @param string $height ??
- *
- * @return string
- * @throws ThinkExecption
- */
- function image($length = 4, $mode = 4, $type = 'png', $width = 50, $height = 25) {
- $randval = $this->rand_string($length, $mode); //?????
- $authCode = new Zend_Session_Namespace('Auth_Code'); //???????
- $authCode->imagecode = $randval; //??session????????session?
-
- //$_SESSION['IMGCODE']= $randval; //??????$_SESSION['IMGCODE']?
-
- $width = ($length * 9 + 10) > $width ? $length * 9 + 10 : $width;
- if ($type != 'gif' && function_exists('imagecreatetruecolor')) {
- $im = @ imagecreatetruecolor($width, $height);
- } else {
- $im = @ imagecreate($width, $height);
- }
- $r = Array (
- 225,
- 255,
- 255,
- 223
- );
- $g = Array (
- 225,
- 236,
- 237,
- 255
- );
- $b = Array (
- 225,
- 236,
- 166,
- 125
- );
- $key = mt_rand(0, 3);
-
- $backColor = imagecolorallocate($im, $r[$key], $g[$key], $b[$key]); //???????
- $borderColor = imagecolorallocate($im, 100, 100, 100); //???
- $pointColor = imagecolorallocate($im, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255)); //???
-
- @ imagefilledrectangle($im, 0, 0, $width -1, $height -1, $backColor);
- @ imagerectangle($im, 0, 0, $width -1, $height -1, $borderColor);
- $stringColor = imagecolorallocate($im, mt_rand(0, 200), mt_rand(0, 120), mt_rand(0, 120));
- // ??
- for ($i = 0; $i < 10; $i++) {
- $fontcolor = imagecolorallocate($im, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
- imagearc($im, mt_rand(-10, $width), mt_rand(-10, $height), mt_rand(30, 300), mt_rand(20, 200), 55, 44, $fontcolor);
- }
- for ($i = 0; $i < 25; $i++) {
- $fontcolor = imagecolorallocate($im, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
- imagesetpixel($im, mt_rand(0, $width), mt_rand(0, $height), $pointColor);
- }
-
- @ imagestring($im, 5, 5, 3, $randval, $stringColor);
- $this->output($im, $type);
- }
-
- function output($im, $type = 'png') {
- header("Content-type: image/" . $type);
- $ImageFun = 'Image' . $type;
- $ImageFun ($im);
- imagedestroy($im);
- }
-
- /**
- * ???????????????? ????6? ???????
- *
- * @param string $len ??
- * @param string $type ????
- * 0 ?? 1 ?? ?? ??
- * @param string $addChars ????
- * @return string
- */
- function rand_string($len = 6, $type = '', $addChars = '') {
- $str = '';
- switch ($type) {
- case 0 :
- $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' . $addChars;
- break;
- case 1 :
- $chars = str_repeat('0123456789', 3);
- break;
- case 2 :
- $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' . $addChars;
- break;
- case 3 :
- $chars = 'abcdefghijklmnopqrstuvwxyz' . $addChars;
- break;
- default :
- // ????????????oOLl???01???????addChars??
- $chars = 'ABCDEFGHIJKMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz23456789' . $addChars;
- break;
- }
- if ($len > 10) { //?????????????
- $chars = $type == 1 ? str_repeat($chars, $len) : str_repeat($chars, 5);
- }
- if ($type != 4) {
- $chars = str_shuffle($chars);
- $str = substr($chars, 0, $len);
- } else {
- // ?????
- for ($i = 0; $i < $len; $i++) {
- $str .= substr($chars, floor(mt_rand(0, mb_strlen($chars, 'utf-8') - 1)), 1);
- }
- }
- return $str;
- }
-
- }
-
-
- ?>