首页 > Web开发 > 详细

[php 随机生成验证码]

时间:2015-10-20 16:37:45      阅读:275      评论:0      收藏:0      [点我收藏+]
<?php
session_start();
//随机生成验证码的字符串
function random($len) {
    $srcstr="ABCDEFGHIJKLMNPQRSTUVWXYZ123456789";
    mt_srand();
    $strs="";
    for($i=0;$i<$len;$i++) {
        $strs.=$srcstr[mt_rand(0,33)];
    }
    return ($strs);
}
$str=random(5); //随机生成的字符串
$width=60;  //验证码图片的宽度
$height=25; //验证码图片的高度
//Date in the past
header("Expires:Mon,26 Jul 1997 05:00:00 GMT");
//always modified 
header("Last-Modified:".gmdate("D,d M Y H:i:s")."GMT");
//HTTP/1.1 
header("Cache-Control:no-store,no-cache,must-revalidate");
header("Cache-Control:post-check=0,pre-check=0",false);
//HTTP/1.0
header("Pragma:no-cache");
header("Content-Type:image/png");
 
$im=imagecreate($width,$height);
$back=imagecolorallocate($im,0xFF,0xFF,0xFF);    //背景色
$pix=imagecolorallocate($im,187,190,247);        //模糊点颜色
$font=imagecolorallocate($im,41,163,238);        //字体色
//绘制1000个模糊作用的点
mt_srand();
for($i=0;$i<1000;$i++) {
    imagesetpixel($im,mt_rand(0,$width),mt_rand(0,$height),$pix);
}
imagestring($im,5,7,5,$str,$font);//绘制随机生成的字符串
imagerectangle($im,0,0,$width-1,$height-1,$font);//在验证码图像周围绘制1px的边框
imagepng($im);//建立一张PNG格式图形
imagedestroy($im);//将图片handle解构,释于内存空间
$_SESSION["auth_code"]=$str;
?>

@header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");//标记内容最后修改时间
@header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");//内容过期时间 
@header("Cache-Control: no-cache, must-revalidate" );//强制不缓存
@header("Pragma: no-cache" );//禁止本页被缓存

一般情况下browser会保存曾经访问过的页面,二次访问时就直接提取缓存,不需要再向服务器请求了。

而这里需要保证每次的验证码不同,所以要强制浏览器每次都向服务器请求。


http://www.cnblogs.com/jingwhale/p/4277826.html

 验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机还是人的公共全自动程序。

[php 随机生成验证码]

原文:http://my.oschina.net/sikou/blog/519382

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!