Heim  >  Artikel  >  php教程  >  php完整验证码代码,php验证码

php完整验证码代码,php验证码

WBOY
WBOYOriginal
2016-06-13 08:43:071520Durchsuche

php完整验证码代码,php验证码

<?<span>php 
</span><span>require_once</span> 'string.func.php'<span>;
</span><span>//</span><span>通过GD库做验证码</span><span>
/*</span><span>*
 *添加验证文字
 * @param int $type
 * @param int $length
</span><span>*/</span>
<span>function</span> buildRandomString(<span>$type</span>=1,<span>$length</span>=4<span>){
    </span><span>$row</span>=''<span>;
    </span><span>if</span>(<span>$type</span>==1<span>){
        </span><span>$row</span>=<span>join</span>('',<span>range</span>(0, 9<span>));
    }</span><span>else</span> <span>if</span>(<span>$type</span>==2<span>){
        </span><span>$row</span>=<span>join</span>('', <span>array_merge</span>(<span>range</span>('a','z'),<span>range</span>('A', 'Z'<span>)));
    }</span><span>else</span> <span>if</span>(<span>$type</span>==3<span>){
        </span><span>$row</span>=<span>join</span>('', <span>array_merge</span>(<span>range</span>('a','z'),<span>range</span>('A', 'Z'),<span>range</span>(0, 9<span>)));
    };
    </span><span>$row</span>=<span>str_shuffle</span>(<span>$row</span><span>);
   
    </span><span>$row</span>=<span>substr</span>(<span>$row</span>,0,<span>$length</span><span>);
    </span><span>return</span> <span>$row</span><span>;
}
</span><span>/*</span><span>*
 * 生成缩略图
 * @param int $type //包含数字或者英文
 * @param int $length 多少个字符
 * @param int $pixel 干扰小点的密度
 * @param int $dst_h 干扰线的密度
 * @param string //验证码在$_SESSION中的名字
 </span><span>*/</span>

<span>function</span> verifyImage(<span>$type</span>=1,<span>$length</span>=4,<span>$pixel</span>=0,<span>$line</span>=0,<span>$sess_name</span> = "verify"<span>){
    </span><span>//</span><span>session_start();
    //创建画布</span>
    <span>$width</span> = 100<span>;
    </span><span>$height</span> = 40<span>;
    </span><span>$image</span> = imagecreatetruecolor ( <span>$width</span>, <span>$height</span><span> );
    </span><span>$white</span> = imagecolorallocate ( <span>$image</span>, 255, 255, 255<span> );
    </span><span>$black</span> = imagecolorallocate ( <span>$image</span>, 0, 0, 0<span> );
    </span><span>//</span><span>用填充矩形填充画布</span>
    imagefilledrectangle ( <span>$image</span>, 1, 1, <span>$width</span> - 2, <span>$height</span> - 2, <span>$white</span><span> );
    </span><span>$chars</span> = buildRandomString ( <span>$type</span>, <span>$length</span><span> );
    </span><span>$_SESSION</span> [<span>$sess_name</span>] = <span>$chars</span><span>;
    </span><span>//</span><span>$fontfiles = array ("MSYH.TTF", "MSYHBD.TTF", "SIMLI.TTF", "SIMSUN.TTC", "SIMYOU.TTF", "STZHONGS.TTF" );</span>
    <span>$fontfiles</span> = <span>array</span> ("SIMKAI.TTF"<span> );
    </span><span>//</span><span>由于字体文件比较大,就只保留一个字体,如果有需要的同学可以自己添加字体,字体在你的电脑中的fonts文件夹里有,直接运行输入fonts就能看到相应字体</span>
    <span>for</span>(<span>$i</span> = 0; <span>$i</span> < <span>$length</span>; <span>$i</span> ++<span>) {
        </span><span>$size</span> = <span>mt_rand</span> ( 14, 18<span> );
        </span><span>$angle</span> = <span>mt_rand</span> ( - 15, 15<span> );
        </span><span>$x</span> = 5 + <span>$i</span> * <span>$size</span><span>;
        </span><span>$y</span> = <span>mt_rand</span> ( 20, 26<span> );
        </span><span>$fontfile</span> = "../fonts/" . <span>$fontfiles</span> [<span>mt_rand</span> ( 0, <span>count</span> ( <span>$fontfiles</span> ) - 1<span> )];
        </span><span>$color</span> = imagecolorallocate ( <span>$image</span>, <span>mt_rand</span> ( 50, 90 ), <span>mt_rand</span> ( 80, 200 ), <span>mt_rand</span> ( 90, 180<span> ) );
        </span><span>$text</span> = <span>substr</span> ( <span>$chars</span>, <span>$i</span>, 1<span> );
        imagettftext ( </span><span>$image</span>, <span>$size</span>, <span>$angle</span>, <span>$x</span>, <span>$y</span>, <span>$color</span>, <span>$fontfile</span>, <span>$text</span><span> );
    }
    </span><span>if</span> (<span>$pixel</span><span>) {
        </span><span>for</span>(<span>$i</span> = 0; <span>$i</span> < 50; <span>$i</span> ++<span>) {
            imagesetpixel ( </span><span>$image</span>, <span>mt_rand</span> ( 0, <span>$width</span> - 1 ), <span>mt_rand</span> ( 0, <span>$height</span> - 1 ), <span>$black</span><span> );
        }
    }
    </span><span>if</span> (<span>$line</span><span>) {
        </span><span>for</span>(<span>$i</span> = 1; <span>$i</span> < <span>$line</span>; <span>$i</span> ++<span>) {
            </span><span>$color</span> = imagecolorallocate ( <span>$image</span>, <span>mt_rand</span> ( 50, 90 ), <span>mt_rand</span> ( 80, 200 ), <span>mt_rand</span> ( 90, 180<span> ) );
            imageline ( </span><span>$image</span>, <span>mt_rand</span> ( 0, <span>$width</span> - 1 ), <span>mt_rand</span> ( 0, <span>$height</span> - 1 ), <span>mt_rand</span> ( 0, <span>$width</span> - 1 ), <span>mt_rand</span> ( 0, <span>$height</span> - 1 ), <span>$color</span><span> );
        }
    }
    </span><span>header</span> ( "content-type:image/gif"<span> );
    imagegif ( </span><span>$image</span><span> );
    imagedestroy ( </span><span>$image</span><span> );
}</span>

主要要点:1、如果前面没有申明session_start();则需要申明;2、字体可以在cmf输入fonts下载到自己定义的fonts文件夹;3、$_SESSION [$sess_name]可以通过$_POST获得用户输入的验证码进行比较。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn