使用php为html页面创建登录验证码

使用php为html页面创建登录验证码

效果
在这里插入图片描述
验证码的创建

<?php
//1.创建画布
$canvas=imagecreatetruecolor(100,30);
//2.创建背景颜色
$bg_color=imagecolorallocate($canvas, 0xCC, 0xCC, 0xCC);
//3.填充颜色(注意:上面的第二步只是创建对应的颜色,第一个参数放画布是因为,画布分为rgb和真彩,所对应的rgb值有所不同)
imagefill($canvas, 0, 0, $bg_color);
//4.生成验证码的字符
$charCode="ZXCVBNMASDFGHJKLQWERTYUIOP23456789zxcvbnmkjhgfdsaqwertyuip";
$charCode_len=strlen($charCode)-1;
$code="";//最终生成的验证码
for($i=0;$index=4,$i<$index;$i++){
 $code.=$charCode[mt_rand(0, $charCode_len)];
}
//将code发布到session上用于页面核对验证码
session_start();
$_SESSION['vCode']=$code;
or($i=0;$index=4,$i<$index;$i++){
 //随机创建一个真彩色,用于添加到字体颜色
 $fontColor=imagecolorallocate($canvas, mt_rand(0, 100), mt_rand(0, 50), mt_rand(0, 50));
 //设置字体的其他属性
 imagettftext($canvas,//作用的背景图
   16,//字体大小
   mt_rand(0, 45),//字体的倾斜角度
   16*$i+15,mt_rand(20, 30),//字体再x、y轴上的浮动范围
   $fontColor,
   'D:\php\http\Apache24\htdocs\Task345\fonts\SourceCodePro-Bold.ttf',
   $code[$i]);
}
/设置干扰元素 小点点
for($i=0;$index=300,$i<$index;$i++){
 $dotColor=imagecolorallocate($canvas, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
 imagesetpixel($canvas, mt_rand(0, 100), mt_rand(0, 30), $dotColor);
}
//设置干扰元素 线
for($i=0;$index=12,$i<$index;$i++){
 $lineColor=imagecolorallocate($canvas, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
 imageline($canvas, mt_rand(0, 100), mt_rand(0, 30), mt_rand(0, 100), mt_rand(0, 30), $lineColor);
}
//设置verifyCode.php文件的响应头类型,用于再html页面上引用验证码图
header('Content-Type:image/gif');
//生成gif图
imagegif($canvas);

html页面调用

//调用只需要将php文档放到图片链接里即可,需注意路径
<img src="./verifyCode.php" />

另外,在实际操作中需要核对验证码时,只需要利用$_SESSION来获取对应的数据
对应上例:

session_start();
 //获取用户填的验证码
 $userVCode=isset($_POST['captcha'])?trim($_POST['captcha']):'';
 //判断验证码是否存在
 if(empty($_SESSION['vCode'])){
  exit("验证码以过期");
 }
 //核对验证码
 $vcode=$_SESSION['vCode'];
 unset($_SESSION['vCode']);//使用过后删除验证码
 if(strtolower($userVCode)!==strtolower($vcode)){//函数strtolower()将所有字母转换成小写,变相不用区分大小写
  exit('验证码输入错误');
 }
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值