首頁  >  文章  >  後端開發  >  php完整驗證碼代碼 php 產生驗證碼 php 簡訊驗證碼 php驗證碼代

php完整驗證碼代碼 php 產生驗證碼 php 簡訊驗證碼 php驗證碼代

WBOY
WBOY原創
2016-07-29 08:55:211822瀏覽

<?<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獲得使用者輸入的驗證碼來比較。

以上就介紹了php完整驗證碼程式碼,包含了php,驗證碼方面的內容,希望對PHP教學有興趣的朋友有幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn