123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- <?php
- /**
- * 验证码:
- *
- */
- session_start();
- header('Content-type: image/png');
- $imageType = 1;
- $codeLen = 4;
- $type = 2;
- $code = getCode($type,$codeLen);
- //第一步:创建一个画布;
- $im = imagecreatetruecolor(100,40);
- $bgcolor = imagecolorallocate($im,230,230,230);
- $red = imagecolorallocate($im,123,0,0);
- //第二步:开始绘图;
- imagefill($im,0,0,$bgcolor);
- //给像素点;
- for($i=0;$i<200;$i++){
- $color = imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));
- imagesetpixel($im,rand(0,100),rand(0,40),$color);
- }
- //给一些直线;
- // for($i=0;$i<4;$i++){
- // $color = imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));
- // imageline($im,rand(5,30),rand(5,30),rand(60,90),rand(5,30),$color);
- // }
- //给验证码:让每个字符都有可能是不一样的;
- for($i=0;$i<$codeLen;$i++){
- $color = imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));
- imagettftext($im,20,rand(10,20),(20*$i+20),30,$color,"simsun.ttc",$code[$i]);
- }
- //第三步:输出图像;
- if($imageType==1){
- imagejpeg($im);
- }else if($imageType==2){
- imagepng($im);
- }else if($imageType==3){
- imagegif($im);
- }
- //销毁图像;
- imagedestroy($im);
- function getCode($type=1,$codeLen){
- $str = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
- //判断要不要数字或字母;
- if($type==1){
- $len = 10;
- }else if($type==2){
- $len = 36;
- }else if($type==3){
- $len = strlen($str);
- }
- $code = "";
- $code = $str[rand(0,$len-1)];//产生一个
- for($i=0;$i<$codeLen-1;$i++){
- for(;;){
- //获取一个随机的字符;
- $value = $str[rand(0,$len-1)];
- //判断是否重复;
- if(substr_count($code,$value)==0){//统计一个字符在字符串中出现的次数;
- $code .= $value;
- break;
- }
- }
- }
- // $session = Yii::$app->session;
- // $session->set('code', $code);
- $_SESSION['code'] = $code;
- return $code;
- }
|