PHP简单验证码功能机制实例详解

 更新时间2019年03月27日 11:07:40   作者Zhihua_W   我要评论

这篇文章主要介绍了PHP简单验证码功能机制,结合实例形式深入浅出的分析了php验证码的原理实现步骤及相关操作技巧,需要的朋友可以参考下

本文实例讲述了PHP简单验证码功能机制分享给大家供大家参考具体如下

网站的安全性是开发者不可忽视的一个问题目前使用最多的一种可以提高网站安全性的方法就是使用验证码功能机制有的仅仅使用一个几位数字字母混乱的验证码有的进行手机发?#25237;?#20449;进行验证有的使用邮箱发送邮件进行验证但是这个验证码功能机制是如何实现的呢下面就为大家详细解释验证码功能机制的实现思路以及简单的实现方法

1验证码功能机制实现思路

常规的验证码实现

a产生一张png的?#35745;?br /> b为?#35745;?#35774;置背景色
c设置字体颜色和样式
d产生4位数的随机的验证码
e把产生的每个字符调整旋转角度和位置画到png?#35745;?#19978;
f加入噪点和干扰线防止注册机器分析原?#35745;?#26469;恶意注册
g输出?#35745;?br /> h释放?#35745;?#25152;占内存
i将验证码保存到session或是数据库
j将和输入的验证码进行对比

短信(邮箱)验证码机制

a产生4-6位数的随机的验证码
b把产生的每个字符保存到session或是数据库
c将验证码发送到用户的手机(邮箱)
d用户在规定时间内进行输入
e将验证码从session或是数据库中取出
f将和输入的验证码进行对比验证

2简单的实现验证码功能机制

新建captcha.php写入以下代码

<?php
/**
 * =======================================
 * Created by WeiBang Technology.
 * User: Wei ZhiHua
 * Date: 2016/10/12 0020
 * Time: 下午 4:14
 * Power: 实现验证码功能
 * =======================================
 */
//开启session
session_start();
//创建一个大小为 100*30 的验证码
$image = imagecreatetruecolor(100, 30);
$bgcolor = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $bgcolor);
$captch_code = '';
for ($i = 0; $i < 4; $i++) {
  $fontsize = 6;
  $fontcolor = imagecolorallocate($image, rand(0, 120), rand(0, 120), rand(0, 120));
  $data = 'abcdefghijkmnpqrstuvwxy3456789';
  $fontcontent = substr($data, rand(0, strlen($data) - 1), 1);
  $captch_code .= $fontcontent;
  $x = ($i * 100 / 4) + rand(5, 10);
  $y = rand(5, 10);
  imagestring($image, $fontsize, $x, $y, $fontcontent, $fontcolor);
}
//就生成的验证码保存到session
$_SESSION['authcode'] = $captch_code;
//在?#35745;?#19978;增加点干扰元素
for ($i = 0; $i < 200; $i++) {
  $pointcolor = imagecolorallocate($image, rand(50, 200), rand(50, 200), rand(50, 200));
  imagesetpixel($image, rand(1, 99), rand(1, 29), $pointcolor);
}
//在?#35745;?#19978;增加线干扰元素
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);
?>

新建form.php写入以下代码

<?php
/**
 * =======================================
 * Created by WeiBang Technology.
 * User: Wei ZhiHua
 * Date: 2016/10/12 0021
 * Time: 下午 4:14
 * Power: 实现验证码功能
 * =======================================
 */
if (isset($_REQUEST['authcode'])) {
  session_start();
  if (strtolower($_REQUEST['authcode']) == $_SESSION['authcode']) {
    echo "输入正确";
  } else {
    echo "输入错误";
  }
  exit();
}
?>
<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="content-type" content="text/html;charset=utf-8"/>
  <title>确认验证码</title>
</head>
<body>
<form method="post" action="./form.php">
  <p>验证码?#35745;?
    <img id="captcha_img" border="1" src="./captcha.php?r=<?php echo rand(); ?>" width=100 height=30>
    <a href="javascript:void(0)" rel="external nofollow" 
      onClick="document.getElementById('captcha_img').src='./captcha.php?r='+Math.random()">换一个</a>
  </p>
  <p>请输入?#35745;?#20013;的内容<input type="text" name="authcode" value=""/></p>
  <p><input type="submit" value="提交" style="padding:6px 20px;"></p>
</form>
</body>
</html>

以上就是php验证码的制作思路和实现方法从简单到复杂可以根据这些写出?#27973;?#23436;美的验证码功能机制

更多关于PHP相关内容?#34892;?#36259;的读者可查看本站专题PHP图形与?#35745;?#25805;作技巧汇总PHP数组(Array)操作技巧大全PHP数据结构与算法教程php程序设计算法总结PHP数学运算技巧总结php字符串(string)用法总结php常见数据库操作技巧汇总

希望本文所述?#28304;?#23478;PHP程序设计有所帮助

相关文章

最新评论

35ѡ7