PHP生成验证码

将验证码保存到session里

<?php

session_start();
$nums = "";
for ($i = 0; $i < 4; $i++) {
    //产生随机数并转换成十六进制
    $nums .= dechex(mt_rand(0, 15));
}
//将验证码写入session
$_SESSION['code'] = $nums;

//设置验证码长和宽
$_width = 70;
$_height = 28;
//创建一张图片
$_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);

?>

生成效果图:

 

posted @ 2017-08-14 14:00  LEVY2013  阅读(212)  评论(0编辑  收藏  举报