php生成图片验证码

在我们的网站,系统的开发中经常的会使用到图片的验证码,虽然这种方式,在逐渐的被替代;但是对于一些小型的网站和系统来说,仍然可以算作是一种比较好的方式;

下面是以php的代码实现一种图片验证码,在使用过程中,我们只需要将图片的src指向这个php文件即可;

代码:

<?php
session_start ();//首先开启session
 
//以下三项均可通过前台传递参数进行修改
$sessionkey = "chkcode";//默认验证码的key
$width = 75; // 验证码图片的宽度,默认
$height = 23; // 验证码图片的高度,默认
 
if (isset ( $_GET ["key"] ) && ! empty ( $_GET ["key"] )) {
    $sessionkey = $_GET ["key"];
}
 
if (isset ( $_GET ["width"] ) && ! empty ( $_GET ["width"] )) {
    $width = $_GET ["width"];
}
 
if (isset ( $_GET ["height"] ) && ! empty ( $_GET ["height"] )) {
    $height = $_GET ["height"];
}
 
//生成字符串
function random($len) {
    $srcstr = "ABCDEFGHIJKLMNPQRSTUVWXYZ123456789";//我们把0和O去掉了,防止出现不宜区分
    mt_srand ();
    $strs = "";
    for($i = 0; $i < $len; $i ++) {
        $strs .= $srcstr [mt_rand ( 0, 33 )];
    }
    return strtoupper ( $strs );
}
 
$str = random ( 4 ); // 随机生成的字符串--4位的长度,可以根据实际情况修改
$_SESSION [$sessionkey] = $str; // 放入session
 
@header ( "Content-Type:image/png" );//设定以png的图片格式输出
$im = imagecreate ( $width, $height );//大小
$back = imagecolorallocate ( $im, 0xFF, 0xFF, 0xFF ); // 背景色
$pix = imagecolorallocate ( $im, 187, 230, 247 ); // 模糊点颜色
$font = imagecolorallocate ( $im, 132, 163, 227 ); // 字体色
mt_srand (); // 绘模糊作用的点-加噪点
for($i = 0; $i < 800; $i ++) {
    imagesetpixel ( $im, mt_rand ( 0, $width ), mt_rand ( 0, $height ), $pix );
}
imagestring ( $im, 6, 17, 4, $str, $font );
imagepng ( $im );
imagedestroy ( $im );
?>


这样就生成了一个验证码图片,同时在session中保存了其值,如果需要验证时,只需要将前台输入的内容同session中的值进行比对即可。

转载请注明:http://itsshq.com/article-223.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值