php验证码
1 <?php 2 session_start(); 3 header('Content-Type: text/html;charset=UFT-8'); 4 header("Content-type:image/png"); 5 //定义header,声明图片文件,最好是png,无版权之扰; 6 //生成新的四位整数验证码 7 $verifiability_code = ''; 8 $str = 'abcdefghijkmnpqrstuvwxyz23456789'; 9 10 //定义用来显示在图片上的数字和字母; 11 $l = strlen($str); //得到字串的长度; 12 //循环随机抽取四位前面定义的字母和数字; 13 for($i=1;$i<=4;$i++) 14 { 15 $num=rand(0,$l-1); 16 //每次随机抽取一位数字;从第一个字到该字串最大长度, 17 //减1是因为截取字符是从0开始起算;这样34字符任意都有可能排在其中; 18 $verifiability_code.= strtoupper($str[$num]); 19 //将通过数字得来的字符连起来一共是四位; 20 } 21 22 //使用前先注销掉原有的数据 23 unset ($_SESSION['verifiability_code']); 24 //存入SESSION内 25 $_SESSION['verifiability_code'] = $verifiability_code; 26 27 //其它页面只要包含了该图片 28 //生成验证码图片, 29 srand((double)microtime()*1000000); 30 $im = imagecreate(50,22);//图片宽与高; 31 //主要用到黑白灰三种色; 32 $black = ImageColorAllocate($im, 238,238,238); 33 $white = ImageColorAllocate($im, 0,0,0); 34 $gray = ImageColorAllocate($im, 100,100,100); 35 //将四位整数验证码绘入图片 36 imagefill($im,68,60,$gray); 37 //如不用干扰线,注释就行了; 38 $li = ImageColorAllocate($im, 255,255,255); 39 for($i=0;$i<3;$i++) 40 {//加入3条干扰线;也可以不要;视情况而定,因为可能影响用户输入; 41 imageline($im,rand(0,30),rand(0,21),rand(20,40),rand(0,21),$li); 42 } 43 //字符在图片的位置; 44 imagestring($im, 5, 10, 2, $verifiability_code, $white); 45 for($i=0;$i<90;$i++) 46 {//加入干扰象素 47 imagesetpixel($im, rand()%70 , rand()%30 , $gray); 48 } 49 ImageGIF($im); 50 ImageDestroy($im); 51 ?>