php实现网页端验证码功能


Posted in PHP onJuly 11, 2017

我们在实际开发中,会用到短信验证码以及网页验证码,相对来说网页验证码的成本比较低,安全系数也还可以,接下来我们就来做一个网页端的验证码,直接上代码:

首先来说一下文件目录结构:

|----------phpyanzheng  项目文件夹

|----fonttype 文件夹放字体文件,字体文件一般以 .ttf和.otf结尾

|----1.php  里面放php语言代码

|----index.html  里面放网页布局

1.php

<?php
  header('content-type:image/jpeg');//定义一下代码以jpeg文件来解析
  $width = 120;//定义了图像的宽
  $height = 40;//定义了图像的高
  $element = array('q','w','e','r','t','y','u','i','o','p','l','k','j','h','g','f','d','s','a','z','x',
  'c','v','b','n','m','1','2','3','4','5','6','7','8','9','0','Q','W','E','R','T','Y','U','I','O','P','A'
  ,'S','D','F','G','H','J','K','L','M','N','B','V','C','X','Z');//定义一个显示文本的数组
  $string = '';
  for($i=0;$i<4;$i++){
    $string.=$element[rand(0,count($element)-1)];//随机产生四个文本目标
  }
  $img = imagecreatetruecolor($width, $height);//设置验证区宽高
  $colorBg = imagecolorallocate($img,rand(185,255),rand(185,255),rand(185,255));//产生200-255的随机数
  $colorBorder = imagecolorallocate($img,rand(50,100),rand(50,100),rand(50,100));//边框颜色
  $colorDian = imagecolorallocate($img,rand(0,100),rand(0,100),rand(0,100));//背景小点的颜色
  $colorLine = imagecolorallocate($img,rand(0,255),rand(0,255),rand(0,255));
  $colorString = imagecolorallocate($img,rand(20,80),rand(20,80),rand(20,80));
  imagefill($img, 0, 0, $colorBg);//设置位置和背景颜色
  imagerectangle($img,0,0,$width-1,$height-1,$colorBorder);//画一个边框
  for($i=0;$i<200;$i++){//循环出200个干扰点
    imagesetpixel($img, rand(0, $width-1), rand(0, $height-1), $colorDian);
  }
  for($i=0;$i<round(5);$i++){//循环出5条干扰线
    imageline($img,rand(0,$width/2),rand(0,$height/2),rand($width/2,$width),rand($height/2,$height),$colorLine);
  }
  //imagestring($img, 4, 0, 0,'a5dg', $colorString);
  
  imagettftext($img,25,rand(5, 15),rand(0,40),39,$colorString,'fonttype/PrincetownStd.otf',$string);
  //    图像名称  字体大小 倾斜角度 起始位置X轴 起始位置Y轴 颜色 字体位置 显示的内容
  imagejpeg($img);//输出图像
?>

index.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>孙三峰--验证码</title>
    <script type="text/javascript" src="js/jquery-1.1.0.js" ></script>
  </head>
  <body>
    <!--注意:原文中对应的ip地址是自己电脑端ip,如果不能正常运行,请修改ip-->
    <p>
      <label class="lbright">验证码:</label> 
      <span> 
        <input type="text" name="validcode" style="width:70px; vertical-align:middle;" id="validcode"/> 
        <img id="codePic" src="http://192.168.1.113:8601/PHP/phpyanzheng/1.php" width="120" height="40"/>          
      </span>         
      <span id="codePic" onclick="getPic();">看不清楚,换一张</span> <!---->
    </p>     
  </body>
  <script type="text/javascript"> 
     function getPic(){ 
         $("#codePic").attr("src","http://192.168.1.113:8601/PHP/phpyanzheng/1.php?flag="+Math.random()); <!--局部刷新--> 
     }; 
  </script>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
扩展你的 PHP 之入门篇
Dec 04 PHP
PHP 开源AJAX框架14种
Aug 24 PHP
php超快高效率统计大文件行数
Jul 05 PHP
浅谈php7的重大新特性
Oct 23 PHP
php创建无限级树型菜单
Nov 05 PHP
PHP常用技巧汇总
Mar 04 PHP
Windows 下安装 swoole 图文教程(php)
Jun 05 PHP
PHP调用其他文件中的类
Apr 02 PHP
php常用字符串长度函数strlen()与mb_strlen()用法实例分析
Jun 25 PHP
PHP defined()函数的使用图文详解
Jul 20 PHP
PHP实现简单的协程任务调度demo示例
Feb 01 PHP
PHP7创建销毁session的实例方法
Feb 03 PHP
阿里云PHP SMS短信服务验证码发送方法
Jul 11 #PHP
PHP实现阿里大鱼短信验证的实例代码
Jul 10 #PHP
yii2局部关闭(开启)csrf的验证的实例代码
Jul 10 #PHP
PHP实现登陆并抓取微信列表中最新一组微信消息的方法
Jul 10 #PHP
PHP基于socket实现的简单客户端和服务端通讯功能示例
Jul 10 #PHP
PHP正则匹配操作简单示例【preg_match_all应用】
Jul 10 #PHP
php使用flock阻塞写入文件和非阻塞写入文件的实例讲解
Jul 10 #PHP
You might like
PHP在字符断点处截断文字的实现代码
2011/04/21 PHP
ThinkPHP CURD方法之where方法详解
2014/06/18 PHP
PHP实现一维数组转二维数组的方法
2015/02/25 PHP
php实现html标签闭合检测与修复方法
2015/07/09 PHP
基于PHP生成简单的验证码
2016/06/01 PHP
php 生成Tab键或逗号分隔的CSV
2016/09/24 PHP
PHP空值检测函数与方法汇总
2017/11/19 PHP
PHP页面静态化――纯静态与伪静态用法详解
2020/06/05 PHP
Javascript实现的分页函数
2006/12/22 Javascript
node.js微信公众平台开发教程
2016/03/04 Javascript
总结AngularJS开发者最常犯的十个错误
2016/08/31 Javascript
js实现图片切换(动画版)
2016/12/25 Javascript
JS中解决谷歌浏览器记住密码输入框颜色改变功能
2017/02/13 Javascript
JS验证字符串功能
2017/02/22 Javascript
总结js中的一些兼容性易错的问题
2017/12/18 Javascript
用Vue.js方法创建模板并使用多个模板合成
2019/06/28 Javascript
Vue数据绑定实例写法
2019/08/06 Javascript
解决layui调用自定义方法提示未定义的问题
2019/09/14 Javascript
不刷新网页就能链接新的js文件方法总结
2020/03/01 Javascript
用Python编写一个简单的FUSE文件系统的教程
2015/04/02 Python
Python中functools模块函数解析
2017/03/12 Python
Python解决抛小球问题 求小球下落经历的距离之和示例
2018/02/01 Python
python线程池threadpool使用篇
2018/04/27 Python
python 自动去除空行的实例
2018/07/24 Python
在Python中定义一个常量的方法
2018/11/10 Python
python实现飞机大战游戏(pygame版)
2020/10/26 Python
python matplotlib:plt.scatter() 大小和颜色参数详解
2020/04/14 Python
python 安装移动复制第三方库操作
2020/07/13 Python
REN Clean Skincare官网:英国本土有机护肤品牌
2019/02/23 全球购物
经济信息管理专业大学生求职信
2013/09/27 职场文书
高级编程求职信模板
2014/02/16 职场文书
幼儿园中班区域活动总结
2014/07/09 职场文书
写字楼租赁意向书
2014/07/30 职场文书
四风问题对照检查材料
2014/09/22 职场文书
python如何正确使用yield
2021/05/21 Python
MySQL 使用索引扫描进行排序
2021/06/20 MySQL