php 简单精致的验证码

  • 2016-11-14 11:57:38

为提高网站安全性,登陆采用验证码是必不可少的。一款简单精致的PHP验证码应运而生!此验证码简洁美观,源码简单,可以自定义修改样式,是一款不错的验证码。

<?php
//将验证码保存到session里,供全局使用
session_start();
$nums = "";
for ($i = 0; $i < 4; $i++)
{
    //产生随机数并转换成十六进制
    $nums.=dechex(mt_rand(0, 15));
}
//将验证码写入session
$_SESSION['code'] = $nums;
//设置验证码长和宽
$_width = 60;
$_height = 20;
//创建一张图片
$_img = imagecreatetruecolor($_width, $_height);
//创建一个白色
$_white = imagecolorallocate($_img, 220, 250, 250);
//填充背景
imagefill($_img, 0, 0, $_white);
//随机画6条线条
for ($i = 0; $i < 6; $i++)
{
    $_rnd_color = imagecolorallocate($_img, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
    imageline($_img, mt_rand(0, $_width), mt_rand(0, $_width), mt_rand(0, $_width), mt_rand(0, $_width), $_rnd_color);
}
//随机画出雪花
for ($i = 0; $i < 60; $i++)
{
    imagestring($_img, 1, mt_rand(1, $_width), mt_rand(1, $_height), "*", imagecolorallocate($_img, mt_rand(200, 255), mt_rand(200, 255), mt_rand(200, 255)));
}
//输出验证码
for ($i = 0; $i < strlen($_SESSION['code']); $i++)
{
    imagestring($_img, mt_rand(6, 10), $i * $_width / 4 + mt_rand(1, 10), mt_rand(1, $_height / 2), $_SESSION['code'][$i], imagecolorallocate($_img, mt_rand(0, 100), mt_rand(0, 150), mt_rand(0, 200)));
}
//输出和销毁
header("Content-Type:image/png");
imagepng($_img);
imagedestroy($_img);
?>

评论

发表评论