PHP图片验证码功能简单开发

  验证码是网站开发中常用的功能,可以保证用户提交数据和服务器的安全,验证码的形态也是千奇百怪,从传统的数字+字母,到拼图,再到找元素等等越来越复杂。

  今天说一下用PHP原生开发方式如何写一个最常见的数字+字母图片验证码功能,过程非常简单。

  首先创建验证码生成文件verify.php

<?php
// 开启session
session_start();
// 创建图片资源,宽高
$img = imagecreatetruecolor(70,30);
// 创建蓝色
$blue = imagecolorallocate($img,0,0,255);
// 创建灰色
$gray = imagecolorallocate($img,200,200,200);
// 用灰色填充图片背景色
imagefill($img,0,0,$gray);
// 合并随机生成0-9,a-z,A-Z的数组
$arr = array_merge(range(0,9),range('a','z'),range('A','Z'));
// 随机打乱数组
shuffle($arr);
// 连接数组,取出前4位
$randStr = join('',array_slice($arr,0,4));
// 把验证码存入session
$vcode = $_SESSION['vcode'] = $randStr;
// 用蓝色字体显示,设置字体文件,生成验证码
imagettftext($img,15,0,0,20,$blue,'C:\Windows\Fonts\Arial.ttf',$randStr);
// 设置文件编码
header('content-type:image/jpeg');
// 输出jpg格式图片
imagejpeg($img);
// 释放资源
imagedestroy($img);

  写一个简单的表单页面index.html用来用户提交数据在img标签中引入前面的verify.php文件,增加onclick属性用来每次点击刷新不同的验证码。

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	<form action="check.php" method="post">
		<p>用户名:<input type="text" name="username"></p>
		<p>密&nbsp;&nbsp;&nbsp;码:<input type="password" name="password"></p>
		<p>验证码:<input type="text" name="fcode">&nbsp;<img src="verify.php" onclick="this.src='verify.php?rand='+Math.random()" alt=""></p>
		<p><input type="submit" value="注册"></p>
	</form>
</body>
</html>

页面效果如图

  最后再写一个用来验证提交数据的页面check.php

<?php
// 开启session
session_start();
// 获取表单传来用户输入的验证码,并转换为小写
$fcode = strtolower($_POST['fcode']);
// 获取session中保存的生成验证码
$vcode = strtolower($_SESSION['vcode']);
// 对比两个验证码是否一致
if($fcode == $vcode){
	echo "用户 {$_POST['username']} 注册成功!";
}else{
	echo '验证码错误!';
}

本站原创内容,转载请注明来源:https://www.liutonghui.com/67

唐家崴子游记
上一篇 2014-07-03
jQuery制作图片浮动放大,鼠标滚轮缩放功能
下一篇 2014-08-10

评论列表(0条)

  • 暂无评论

发表评论

captcha

相关推荐

  • PHP图片防盗链技术

      图片防盗链的核心原理:验证图片请求的域名来源,只允许本站加载图片,拒绝外部未授权网站引用图片地址,以达到防盗链的目的。   浏览器请求图片时,会执行HTTP_REFERER请求头,记录从哪个页面发起请求,用程序判断读取该来源的地址,是否是合法域名,是则输出图片,否则返回禁止图片或403。   方案1:基础防盗链   img.php &lt;?php // 允许访问的域名 $allow_hosts = [ 'localhost......

    2013-10-06
    34540
  • PHP动态滚屏无刷新加载数据

      滚屏加载,也称为滚动加载或懒加载,是一种网页设计技术,当用户滚动页面时,新内容会自动加载,无需点击&ldquo;下一页&rdquo;按钮。这种技术提高了用户体验,尤其是在处理大量数据时,如社交媒体、新闻网站和电子商务平台。   滚屏加载技术,就是使用Javascript监视滚动条的位置,每次当滚动条到达浏览器窗口底部时,触发一个Ajax请求后台PHP程序,返回相应的数据,并将返回的数据追加到页面底部,从而实现了动态加载,其实就是一个......

    2013-10-24
    22230
  • PHP和HTML代码分离

      在这之前,我们开发 PHP 程序的时候,都是 HTML 和 PHP 混合写在一起的。但是代码混写会有一些问题,比如说:表单页和 PHP 页如果写在一起的话,页面运行时就会马上执行写入操作,而这个时候表单还没有提交。另外,表单提交以后,也不需要再显示表单页了。于是就有了判断。 if($_POST) { //处理提交后的数据 } else { //显示表单 }   用 if 把程序分成两个流程。   在显示表单的时候。中......

    2014-04-23
    23120
  • jQuery制作图片浮动放大,鼠标滚轮缩放功能

      点击图片居中放大显示,背景半透明遮罩,鼠标滚轮可缩放图片大小,再次点击图片恢复原始大小并关闭。 &lt;!DOCTYPE html&gt; &lt;html lang="zh-CN"&gt; &lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;title&gt;图片点击放大居中+滚轮缩放&lt;/title&gt; &lt;script src="https://code.jqu......

    2014-08-10
    17270
  • PHP利用正则表达式提取内容中图片的函数

      用PHP开发产品中经常需要从某部分内容中提取出图片,比如在一个表单中,我们需要从内容中提取出图片的路径当作缩略图,这时就可以用正则表达式的规则匹配的方法来提取出图片路径,利用下面这个函数来完成。 &lt;?php function getImgs($content,$order='ALL'){ $pattern="//"; preg_match_all($pattern,$content,$match); ......

    2015-01-07
    23810
  • PHP实现相关文章推荐功能

      实现相关文章推荐功能通常需要使用更高级的推荐系统算法,对于查询到的相关文章,需要计算它们与当前文章的相似度。相似度可以根据文章的内容、标题、标签等属性进行计算。可以使用文本相似度算法(如余弦相似度、Jaccard相似度等)或基于内容的推荐算法来计算相似度。   假设有一个包含文章信息的数据库表 articles: CREATE TABLE articles ( id INT PRIMARY KEY, title VA......

    2021-05-24
    17410
  • ThinkPHP数据软删除及数据恢复功能

      ThinkPHP的软删除不是真正删除数据库数据,而是通过标记字段(如delete_time)记录删除状态,查询时自动过滤delete_time字段已标记删除的数据,支持数据恢复和真实删除,相当于为项目加了一个回收站功能,以避免数据被误删。   软删除依赖模型操作,不支持原生查询,需要数据表有删除标记字段(默认delete_time,类型:datetime/timestamp,允许null),需要引入ThinkPHP内置的SoftDe......

    2022-01-27
    10700
  • ThinkPHP路由简单配置

      ThinkPHP拥有丰富的路由配置功能,灵活的配置路由可以更好的优化URL结构,方便维护,下面简单介绍一下ThinkPHP路由配置方法。   ThinkPHP默认路由结构为/入口文件/应用/控制器/方法,因此就产生了这样一长串的URL结构: https://127.0.0.2/index.php/index/index/index   这还仅仅是首页URL,这样的结构显然不利于维护,更不利于SEO,所以需要做路由配置,以多应用为例,......

    2025-04-21
    7490