使用PHP实现验证码

来源:互联网 发布:电脑mac地址怎么看 编辑:程序博客网 时间:2024/05/22 07:50

使用PHP实现验证码

实现验证码字符串

<?php/** * Created by PhpStorm. * User: sunnylinner * Date: 2016/6/13 * Time: 12:16 */function buildRandomString($type=1,$length=4){    if ($type == 1) {        $chars = join("", range(0, 9));    } elseif ($type == 2) {        $chars = join("", array_merge(range("a", "z"), range("A", "Z")));    } elseif ($type == 3) {        $chars = join("", array_merge(range("a", "z"), range("A", "Z"), range("0,9")));    }    if ($length > strlen($chars)) {        exit("字符串长度不够");}    $chars = str_shuffle($chars);//打乱    return substr($chars, 0, $length);//截取}

实现验证码图片生成

<?php/** * Created by PhpStorm. * User: sunnylinner * Date: 2016/6/13 * Time: 12:16 */require_once 'string.func.php';//通过GD库做验证码function verifyImage($type = 1, $length = 4, $pixel = 0, $line = 0,$sess_name = "verify"){    session_start();    //创建画布    $width = 80;    $height = 28;    $image = imagecreatetruecolor($width, $height);    $white = imagecolorallocate($image, 255, 255, 255);    $black = imagecolorallocate($image, 0, 0, 0);    //用填充矩阵填充画布    imagefilledrectangle($image, 1, 1, $width - 2, $height - 2, $white);    $chars = buildRandomString($type, $length);    $_SESSION[$sess_name] = $chars;    $fontfiles = array("msyh.ttc", "SIMLI.TTF", "SourceCodePro-Black.ttf");    for ($i = 0; $i < $length; $i++) {        $size = mt_rand(14, 18);//大小        $angle = mt_rand(-15, 15);//角度        $x = 5 + $i * $size;        $y = mt_rand(20, 26);        $fontfile = "../fonts/" . $fontfiles[mt_rand(0, count($fontfiles) - 1)];        $color = imagecolorallocate($image, mt_rand(50, 90), mt_rand(80, 200), mt_rand(90, 180));        $text = substr($chars, $i, 1);        imagettftext($image, $size, $angle, $x, $y, $color, $fontfile, $text);    }    if ($pixel) {        for ($i = 0; $i < $pixel; $i++) {            imagesetpixel($image, mt_rand(0, $width - 1), mt_rand(0, $height - 1), $black);        }    }    if ($line) {        for ($i = 1; $i < $line; $i++) {            $color = imagecolorallocate($image, mt_rand(50, 90), mt_rand(80, 200), mt_rand(90, 180));            imageline($image, mt_rand(0, $width - 1), mt_rand(0, $height - 1), mt_rand(0, $width - 1), mt_rand(0, $height - 1), $color);        }    }    header("content-type:image/gif");    imagegif($image);    imagedestroy($image);}verifyImage(2,4,20,5);
0 0
原创粉丝点击