制作图片验证码

本文介绍了如何使用PHP创建动态验证码,并实现输入验证的过程。包括验证码的生成、显示、读取和验证步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

php部分

function _code($_width = 75,$_height = 25,$_rnd_code = 4,$_flag = false){

    //会话功能
   // session_start();
    //随机码的个数
    //创建随机码,保存在session可以持久
    for($i=0;$i<$_rnd_code;$i++){
        @$_nmsg.= dechex(mt_rand(0, 15));//.是累计的意思累计4次,将十进制转换成十六进制将出现ABCDEF
    }
    $_SESSION['code'] =$_nmsg;
    //创建一张图片
    $_img = imagecreatetruecolor($_width, $_height);
    //白色
    $_white = imagecolorallocate($_img,255,255,255);
    //填充
    imagefill($_img,0,0,$_white);
    //黑色
    $_black = imagecolorallocate($_img,0,0,0);
    //填充
    //imagefill($_img,0,0,$_black);
    //黑色边框
    if($_flag){
        imagerectangle($_img,0,0,$_width-1,$_height-1,$_black);
    }
    //随机画出6个不同的线
    for($i=1;$i<6;$i++){
        $_rand_color = imagecolorallocate($_img,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));
        $_image_line = imageline($_img,mt_rand(0,75),mt_rand(0,25),mt_rand(0,75),mt_rand(0,25), $_rand_color);
    }
    //随机雪花
    for($i=0;$i<100;$i++){
        $_mt_color = imagecolorallocate($_img,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));
        imagestring($_img,1,mt_rand(1,$_width),mt_rand(1,$_height),'*',$_mt_color);
    }
    //输出验证码
    for($i=0;$i<strlen($_SESSION['code']);$i++){
        $_mt_color = imagecolorallocate($_img,mt_rand(0,100),mt_rand(0,150),mt_rand(0,200));
        imagestring($_img,5,$i*$_width/$_rnd_code+mt_rand(1, 10),mt_rand(1,$_height/2),$_SESSION['code'][$i],$_mt_color);
    
    }
    //输出图片
    header('Content-Type:image/png');
    imagepng($_img);
    //销毁
    imagedestroy($_img);

}

调用函数

_code();

html部分

<dd>验    证    码:<input type="text" name="yzm" class="text yzm" /><img src="code.php" id="code" /></dd>

css部分

#register dl dd img#code{
position:relative;
top:7px;
cursor:pointer;
}

js部分

if(fm.yzm.value.length<4){
alert('验证码错误');
fm.yzm.value='';//清空用户名
fm.yzm.focus();//将光标焦点移至表单字段
return false;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值