php实现的验证码
php实现的验证码 新方式其实也不难懂,就是从 10 个字符中找出 4 个颜色不同的数字字符,而在工行的案例里面还包括了一个中文的文字描述,可能这样用户能更清楚该
新方式其实也不难懂,就是从 10 个字符中找出 4 个颜色不同的数字字符,而在工行的案例里面还包括了一个中文的文字描述,可能这样用户能更清楚该怎样做吧。
下面是源码:
/** * 随机数函数 * @param int $len 长度 * @param mixed $type 类型 * @return string */ function randomString($len, $type = null) { $randstring = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; if (isset($type)) { if ($type == 10 || $type == 16) { $randstring = substr($randstring, 0, $type); } else if ($type == 'a') { $randstring = substr($randstring, 10); } } $length = strlen($randstring) - 1; $result = ''; for ($i = 0; $i < $len; ++ $i) { $result .= $randstring[mt_rand(0, $length)]; } return $result; } $im = imagecreatetruecolor(300, 50); // 随机背景色 $bg = imagecolorallocate($im, mt_rand(0xcc, 0xff), mt_rand(0xcc, 0xff), mt_rand(0xcc, 0xff)); imagefill($im, 0, 0, $bg); // 随机字符颜色 $fg = imagecolorallocate($im, mt_rand(0x00, 0x33), mt_rand(0x00, 0x33), mt_rand(0x00, 0x33)); // 随机高亮数字颜色 switch (mt_rand(1, 3)) { case 1: $hl = imagecolorallocate($im, mt_rand(0xcc, 0xff), mt_rand(0x33, 0x99), mt_rand(0x33, 0x99)); break; case 2: $hl = imagecolorallocate($im, mt_rand(0x33, 0x66), mt_rand(0x99, 0xcc), mt_rand(0x33, 0x99)); break; case 3: $hl = imagecolorallocate($im, mt_rand(0x33, 0x99), mt_rand(0x33, 0x99), mt_rand(0xcc, 0xff)); break; } $fontfile = './alloveragain.ttf'; // 获取高亮数字验证码 $captchaValue = randomString(4, 10); $textLen = 10; // 获取随机字符串 $text = randomString($textLen, 'a'); // 随机获取高亮数字位置并替换 $hltext = array_rand(str_split($text), 4); foreach ($hltext as $key => $idx) { $text[$idx] = $captchaValue[$key]; } // 随机位置、大小、角度显示字符串 for ($i = 0; $i < $textLen; ++$i) { imagettftext($im, mt_rand(15, 25), mt_rand(0, 30) - 15, 28 * $i + mt_rand(10, 20), mt_rand(35, 45), in_array($i, $hltext) ? $hl : $fg, $fontfile, $text[$i]); } header('Expires: Mon, 26 Jul 1970 05:00:00 GMT'); header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); header('Cache-Control: no-cache, must-revalidate'); header('Pragma: no-cache'); header('Content-type: image/png'); imagepng($im); imagedestroy($im);
需要的朋友可以在此下载
精彩图集
精彩文章