php生成带干扰的验证码程序
这里介绍了一款安全性比较高的验证生成程序,可以带干扰线等内容,可以有效的防止用户用程序识别验证码的难度了,代码如下:
<?php /* * Created on 2011-3-11 * Programmer : xiaoyao, QQ:1045195056 验证通过判断输入值与$_SESSION['check_pic']值 */ session_start(); function RandAscii( $number ){ //$number产生数字和字母个数 $arr = array ( '0' , '1' , '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9' , 'a' , 'b' , 'c' , 'd' , 'e' , 'f' , 'g' , 'h' , 'i' , 'j' , 'k' , 'l' , 'm' , 'n' , 'o' , 'p' , 'q' , 'r' , 's' , 't' , 'w' , 'v' , 'u' , 'x' , 'y' , 'z' ); for ( $i =1; $i <= $number ; $i ++) { $rand = $rand . $arr [rand(0,35)]; } return $rand ; } $rand =RandAscii(4); $_SESSION [ 'check_pic' ]= $rand ; //随机产生的四个数赋值session中,用于验证。 $x =80; $y =24; $im =imagecreatetruecolor( $x , $y ); //创建图片 $bg =imagecolorallocate( $im ,255,255,255); //设置颜色背景 imagefill( $im ,0,0, $bg ); $wh =imagecolorallocate( $im ,255,255,0); $grey =imagecolorallocate( $im ,128,128,128); $yellow =imagecolorallocate( $im ,255,255,0); $red =imagecolorallocate( $im ,0,255,0); $foregroundArr = array (imagecolorallocate( $im , rand(0, 20), rand(0, 20), rand(0, 20)), imagecolorallocate( $im , rand(0, 20), rand(0, 10), rand(245, 255)), imagecolorallocate( $im , rand(245, 255), rand(0, 20), rand(0, 10)), imagecolorallocate( $im , rand(245, 255), rand(0, 20), rand(245, 255)) ); //字颜色数组 //画边框 $border = imagecolorallocate( $im , 133, 153, 193); imagerectangle( $im , 0, 0, $x - 1, $y - 1, $border ); for ( $i =0; $i <10; $i ++){ //画干扰线,10条 imageline( $im ,rand(0,60),2,rand(0,60),20, $yellow ); } for ( $j =0; $j <100; $j ++){ imagesetpixel( $im ,rand()%76,rand()%20, $red ); } //imagestring($im,6,15,8,$rand,$wh);//字体大小1-5 imagettftext( $im , 14,rand(30, -30), 5, rand(15, 18) , $foregroundArr [rand(0,3)], 'C:WindowsFontsArial.ttf' , $rand [0]); imagettftext( $im , 14,rand(50, -50), 24, rand(15, 18), $foregroundArr [rand(0,3)], 'C:WindowsFontsArial.ttf' , $rand [1]); imagettftext( $im , 14,rand(50, -50), 43, rand(15, 18) , $foregroundArr [rand(0,3)], 'C:WindowsFontsArial.ttf' , $rand [2]); imagettftext( $im , 14,rand(30, -30), 62, rand(15, 18), $foregroundArr [rand(0,3)], 'C:WindowsFontsArial.ttf' , $rand [3]); //开源代码phpfensi.com header( "Content-type: image/jpeg" ); //输出图片 imagejpeg( $im ); imagedestroy( $im ); ?>调用方法,代码如下:
<?php /* * Created on 2011-3-11 * Programmer : xiaoyao, QQ:1045195056 验证通过判断输入值与$_SESSION['check_pic']值 */ session_start(); //开启session if (isset( $_POST [ 'check' ])) { if ( $_POST [ 'check' ]) { if ( $_POST [ 'check' ]== $_SESSION [ 'check_pic' ]) { echo " 验证码正确" . $_SESSION [ 'check_pic' ]; } else { echo " 验证码错误" . $_SESSION [ 'check_pic' ]; } } } ?> <FORM METHOD=POST ACTION= "" > <img src= "index.php" ><br> <!----链接图片---> <input type= "text" name= "check" > <input type= "submit" value= "提交" > </FORM>查看更多关于php生成带干扰的验证码程序 - php函数的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did30797