>  기사  >  백엔드 개발  >  php 인증 코드 완료 코드 php 인증 코드 생성 php SMS 인증 코드 php 인증 코드 코드

php 인증 코드 완료 코드 php 인증 코드 생성 php SMS 인증 코드 php 인증 코드 코드

WBOY
WBOY원래의
2016-07-29 08:55:211823검색

<?<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 Clip에 글꼴을 입력하여 글꼴 파일을 만듭니다. 3. $_SESSION [$sess_name]은 비교를 위해 $_POST를 통해 사용자가 입력한 인증 코드를 얻을 수 있습니다.

위 내용은 PHP와 인증코드를 포함한 완전한 PHP 인증코드를 소개하고 있으니 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되길 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.