<span style="color: #000000;">php </span><span style="color: #0000ff;">require_once</span> 'string.func.php'<span style="color: #000000;">; </span><span style="color: #008000;">//</span><span style="color: #008000;">通过GD库做验证码</span><span style="color: #008000;"> /*</span><span style="color: #008000;">* *添加验证文字 * @param int $type * @param int $length </span><span style="color: #008000;">*/</span> <span style="color: #0000ff;">function</span> buildRandomString(<span style="color: #800080;">$type</span>=1,<span style="color: #800080;">$length</span>=4<span style="color: #000000;">){ </span><span style="color: #800080;">$row</span>=''<span style="color: #000000;">; </span><span style="color: #0000ff;">if</span>(<span style="color: #800080;">$type</span>==1<span style="color: #000000;">){ </span><span style="color: #800080;">$row</span>=<span style="color: #008080;">join</span>('',<span style="color: #008080;">range</span>(0, 9<span style="color: #000000;">)); }</span><span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span>(<span style="color: #800080;">$type</span>==2<span style="color: #000000;">){ </span><span style="color: #800080;">$row</span>=<span style="color: #008080;">join</span>('', <span style="color: #008080;">array_merge</span>(<span style="color: #008080;">range</span>('a','z'),<span style="color: #008080;">range</span>('A', 'Z'<span style="color: #000000;">))); }</span><span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span>(<span style="color: #800080;">$type</span>==3<span style="color: #000000;">){ </span><span style="color: #800080;">$row</span>=<span style="color: #008080;">join</span>('', <span style="color: #008080;">array_merge</span>(<span style="color: #008080;">range</span>('a','z'),<span style="color: #008080;">range</span>('A', 'Z'),<span style="color: #008080;">range</span>(0, 9<span style="color: #000000;">))); }; </span><span style="color: #800080;">$row</span>=<span style="color: #008080;">str_shuffle</span>(<span style="color: #800080;">$row</span><span style="color: #000000;">); </span><span style="color: #800080;">$row</span>=<span style="color: #008080;">substr</span>(<span style="color: #800080;">$row</span>,0,<span style="color: #800080;">$length</span><span style="color: #000000;">); </span><span style="color: #0000ff;">return</span> <span style="color: #800080;">$row</span><span style="color: #000000;">; } </span><span style="color: #008000;">/*</span><span style="color: #008000;">* * 生成缩略图 * @param int $type //包含数字或者英文 * @param int $length 多少个字符 * @param int $pixel 干扰小点的密度 * @param int $dst_h 干扰线的密度 * @param string //验证码在$_SESSION中的名字 </span><span style="color: #008000;">*/</span> <span style="color: #0000ff;">function</span> verifyImage(<span style="color: #800080;">$type</span>=1,<span style="color: #800080;">$length</span>=4,<span style="color: #800080;">$pixel</span>=0,<span style="color: #800080;">$line</span>=0,<span style="color: #800080;">$sess_name</span> = "verify"<span style="color: #000000;">){ </span><span style="color: #008000;">//</span><span style="color: #008000;">session_start(); //创建画布</span> <span style="color: #800080;">$width</span> = 100<span style="color: #000000;">; </span><span style="color: #800080;">$height</span> = 40<span style="color: #000000;">; </span><span style="color: #800080;">$image</span> = imagecreatetruecolor ( <span style="color: #800080;">$width</span>, <span style="color: #800080;">$height</span><span style="color: #000000;"> ); </span><span style="color: #800080;">$white</span> = imagecolorallocate ( <span style="color: #800080;">$image</span>, 255, 255, 255<span style="color: #000000;"> ); </span><span style="color: #800080;">$black</span> = imagecolorallocate ( <span style="color: #800080;">$image</span>, 0, 0, 0<span style="color: #000000;"> ); </span><span style="color: #008000;">//</span><span style="color: #008000;">用填充矩形填充画布</span> imagefilledrectangle ( <span style="color: #800080;">$image</span>, 1, 1, <span style="color: #800080;">$width</span> - 2, <span style="color: #800080;">$height</span> - 2, <span style="color: #800080;">$white</span><span style="color: #000000;"> ); </span><span style="color: #800080;">$chars</span> = buildRandomString ( <span style="color: #800080;">$type</span>, <span style="color: #800080;">$length</span><span style="color: #000000;"> ); </span><span style="color: #800080;">$_SESSION</span> [<span style="color: #800080;">$sess_name</span>] = <span style="color: #800080;">$chars</span><span style="color: #000000;">; </span><span style="color: #008000;">//</span><span style="color: #008000;">$fontfiles = array ("MSYH.TTF", "MSYHBD.TTF", "SIMLI.TTF", "SIMSUN.TTC", "SIMYOU.TTF", "STZHONGS.TTF" );</span> <span style="color: #800080;">$fontfiles</span> = <span style="color: #0000ff;">array</span> ("SIMKAI.TTF"<span style="color: #000000;"> ); </span><span style="color: #008000;">//</span><span style="color: #008000;">由于字体文件比较大,就只保留一个字体,如果有需要的同学可以自己添加字体,字体在你的电脑中的fonts文件夹里有,直接运行输入fonts就能看到相应字体</span> <span style="color: #0000ff;">for</span>(<span style="color: #800080;">$i</span> = 0; <span style="color: #800080;">$i</span> $length; <span style="color: #800080;">$i</span> ++<span style="color: #000000;">) { </span><span style="color: #800080;">$size</span> = <span style="color: #008080;">mt_rand</span> ( 14, 18<span style="color: #000000;"> ); </span><span style="color: #800080;">$angle</span> = <span style="color: #008080;">mt_rand</span> ( - 15, 15<span style="color: #000000;"> ); </span><span style="color: #800080;">$x</span> = 5 + <span style="color: #800080;">$i</span> * <span style="color: #800080;">$size</span><span style="color: #000000;">; </span><span style="color: #800080;">$y</span> = <span style="color: #008080;">mt_rand</span> ( 20, 26<span style="color: #000000;"> ); </span><span style="color: #800080;">$fontfile</span> = "../fonts/" . <span style="color: #800080;">$fontfiles</span> [<span style="color: #008080;">mt_rand</span> ( 0, <span style="color: #008080;">count</span> ( <span style="color: #800080;">$fontfiles</span> ) - 1<span style="color: #000000;"> )]; </span><span style="color: #800080;">$color</span> = imagecolorallocate ( <span style="color: #800080;">$image</span>, <span style="color: #008080;">mt_rand</span> ( 50, 90 ), <span style="color: #008080;">mt_rand</span> ( 80, 200 ), <span style="color: #008080;">mt_rand</span> ( 90, 180<span style="color: #000000;"> ) ); </span><span style="color: #800080;">$text</span> = <span style="color: #008080;">substr</span> ( <span style="color: #800080;">$chars</span>, <span style="color: #800080;">$i</span>, 1<span style="color: #000000;"> ); imagettftext ( </span><span style="color: #800080;">$image</span>, <span style="color: #800080;">$size</span>, <span style="color: #800080;">$angle</span>, <span style="color: #800080;">$x</span>, <span style="color: #800080;">$y</span>, <span style="color: #800080;">$color</span>, <span style="color: #800080;">$fontfile</span>, <span style="color: #800080;">$text</span><span style="color: #000000;"> ); } </span><span style="color: #0000ff;">if</span> (<span style="color: #800080;">$pixel</span><span style="color: #000000;">) { </span><span style="color: #0000ff;">for</span>(<span style="color: #800080;">$i</span> = 0; <span style="color: #800080;">$i</span> $i ++<span style="color: #000000;">) { imagesetpixel ( </span><span style="color: #800080;">$image</span>, <span style="color: #008080;">mt_rand</span> ( 0, <span style="color: #800080;">$width</span> - 1 ), <span style="color: #008080;">mt_rand</span> ( 0, <span style="color: #800080;">$height</span> - 1 ), <span style="color: #800080;">$black</span><span style="color: #000000;"> ); } } </span><span style="color: #0000ff;">if</span> (<span style="color: #800080;">$line</span><span style="color: #000000;">) { </span><span style="color: #0000ff;">for</span>(<span style="color: #800080;">$i</span> = 1; <span style="color: #800080;">$i</span> $line; <span style="color: #800080;">$i</span> ++<span style="color: #000000;">) { </span><span style="color: #800080;">$color</span> = imagecolorallocate ( <span style="color: #800080;">$image</span>, <span style="color: #008080;">mt_rand</span> ( 50, 90 ), <span style="color: #008080;">mt_rand</span> ( 80, 200 ), <span style="color: #008080;">mt_rand</span> ( 90, 180<span style="color: #000000;"> ) ); imageline ( </span><span style="color: #800080;">$image</span>, <span style="color: #008080;">mt_rand</span> ( 0, <span style="color: #800080;">$width</span> - 1 ), <span style="color: #008080;">mt_rand</span> ( 0, <span style="color: #800080;">$height</span> - 1 ), <span style="color: #008080;">mt_rand</span> ( 0, <span style="color: #800080;">$width</span> - 1 ), <span style="color: #008080;">mt_rand</span> ( 0, <span style="color: #800080;">$height</span> - 1 ), <span style="color: #800080;">$color</span><span style="color: #000000;"> ); } } </span><span style="color: #008080;">header</span> ( "content-type:image/gif"<span style="color: #000000;"> ); imagegif ( </span><span style="color: #800080;">$image</span><span style="color: #000000;"> ); imagedestroy ( </span><span style="color: #800080;">$image</span><span style="color: #000000;"> ); }</span>
主要要点:1、如果前面没有申明session_start();则需要申明;2、字体可以在cmf输入fonts下载到自己定义的fonts文件夹;3、$_SESSION [$sess_name]可以通过$_POST获得用户输入的验证码进行比较。