php写简单的数字和汉字验证码

<?php
session_start();//必须保存在程序的最顶部
$image=imagecreatetruecolor(100,50);//创建一个宽100px,高30的图片
$bgcolor=imagecolorallocate($image,255,255,255);
imagefill($image,0,0,$bgcolor);
/*
for ($i=0;$i<4;$i++){//4个数字
    $fontsize=6;      //字体大小
    $fontcolor=imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120));
    $fontcontent=rand(0,9);//内容是随机产生数字
    $x=($i*100/4)+rand(5,10);
    $y=rand(5,10);
    imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor);//水平的画一行字符串,6个参数
}
*/
$captch_code='';
for($i=0;$i<4;$i++){//字母加数字验证码的制作
    $fontsize=6;
    $fontcolor=imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120));
    $date='abcdefghigklmnopqrstuvwxyz0123456789';
    $fontcontent=substr($date,rand(0,strlen($date)),1);
    $captch_code=$fontcontent;//保存验证码内容
    $x=($i*100/4)+rand(5,10);
    $y=rand(5,10);
    imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor);
}
$_session['authcode']=$captch_code;//存在session['authcode']中
for($i=0;$i<200;$i++){ //随机生成200个点
    $pointcolor=imagecolorallocate($image,rand(50,200),rand(50,200),rand(50,200));//干扰点颜色
    imagesetpixel($image,rand(1,99),rand(1,29),$pointcolor);//画一个单一像素,即画点,点只需要两个坐标就行了
}
for($i=0;$i<3;$i++){
    $linecolor=imagecolorallocate($image,rand(80,220),rand(80,220),rand(80,220));
    imageline($image,rand(1,99),rand(1,29),rand(1,99),rand(1,29),$linecolor);//画一条线,两点确定一条直线
}
header('content-type:image/png');
imagepng($image);
imagedestroy($image);//销毁资源
?>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值