您的位置:首页 > 编程语言 > PHP开发

使用PHP实现验证码

2016-06-13 19:29 513 查看

使用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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php 验证码