创建了一个图形验证码的php文件,设定验证码长度4位,在火狐浏览器下验证码生成了8位, 验证码图形取了前4位,session取了后4位,,这是什么原因 1. [代码] [PHP]代码 ?phpsession_start();
验证码图形取了前4位,session取了后4位,,这是什么原因
1. [代码][PHP]代码
<?php session_start(); // 配置验证码 $code_ini = array( 'code_count' => 4, // 验证码长度 'code_size' => 20, // 验证码字体大小 'code_width' => 100, // 验证码框宽度 'code_height' => 36, // 验证码框高度 'code_num' => true, // 开启数字 'code_upper' => true, // 开启大写字母 'code_lower' => true, // 开启小写字母 'code_remove' => '1li0oO2zZ' ) // 排除易混淆字符 ; // 将配置项转为对应变量 foreach ($code_ini as $key => $value) { $$key = $value; } // 创建验证码画布 $code_img = imagecreatetruecolor($code_width, $code_height); $black = imagecolorallocate($code_img, 0, 0, 0); // 填充随机背景颜色 $bg = imagecolorallocate($code_img, rand(200, 255), rand(200, 255), rand(200, 255)); imagefill($code_img, 0, 0, $bg); // 随机画100个干扰点 for ($i = 0; $i < 100; $i ++) { $color = imagecolorallocate($code_img, rand(0, 200), rand(0, 200), rand(0, 200)); imagesetpixel($code_img, rand(2, $code_width - 2), rand(2, $code_height - 2), $color); } // 随机画10个干扰线 for ($q = 0; $q < 10; $q ++) { $color = imagecolorallocate($code_img, rand(0, 200), rand(0, 200), rand(0, 200)); imageline($code_img, rand(2, $code_width - 2), rand(2, $code_height - 2), rand(2, $code_width - 2), rand(2, $code_height - 2), $color); } // 获取验证码 $code = get_code($code_count, $code_num, $code_upper, $code_lower, $code_remove); $_SESSION['code'] = $code; for ($i = 0; $i < $code_count; $i ++) { $color = imagecolorallocate($code_img, rand(0, 200), rand(0, 200), rand(0, 200)); imagettftext($code_img, $code_size, rand(- 30, 30), 5 + 20 * $i, 24, $color, '../Fun/shruti.ttf', $code[$i]); } imagerectangle($code_img, 0, 0, $code_width - 1, $code_height - 1, $black); // 输出验证码 header('content-type:image/gif'); imagegif($code_img); // 销毁资源 imagedestroy($code_img); // 获得验证码 function get_code($code_count, $code_num, $code_upper, $code_lower, $code_remove) { $num = array(); $upper = array(); $lower = array(); if ($code_num) { $num = range(0, 9); } if ($code_upper) { $upper = range('A', 'Z'); } if ($code_lower) { $lower = range('a', 'z'); } // 合并符合条件数组 $arr = array_merge($num, $lower, $upper); // 排除易混淆字符 $remove = str_split($code_remove); $arr1 = array_diff($arr, $remove); $mess = ''; for ($i = 0; $i < $code_count; $i ++) { $mess .= $arr1[array_rand($arr1)]; $_SESSION['code'] = $mess; } return $mess; }