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中常用编辑器推荐
Jan 02 PHP
Notice: Undefined index: page in E:\PHP\test.php on line 14
Nov 02 PHP
PHP取整数函数常用的四种方法小结
Jul 05 PHP
PHP按行读取、处理较大CSV文件的代码实例
Apr 09 PHP
PHP5.5迭代生成器用法实例详解
Mar 16 PHP
ThinkPHP中order()使用方法详解
Apr 19 PHP
PHP里面把16进制的图片数据显示在html的img标签上(实现方法)
May 02 PHP
php中时间函数date及常用的时间计算
May 12 PHP
PHP结合Vue实现滚动底部加载效果
Dec 17 PHP
PHP PDOStatement::getColumnMeta讲解
Feb 01 PHP
Swoole4.4协程抢占式调度器详解
May 23 PHP
php 实现简单的登录功能示例【基于thinkPHP框架】
Dec 02 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
filemanage功能中用到的common.js
2007/04/08 Javascript
jQuery插件-jRating评分插件源码分析及使用方法
2012/12/28 Javascript
对 jQuery 中 data 方法的误解分析
2014/06/18 Javascript
JQuery动画与特效实例分析
2015/02/02 Javascript
JavaScript替换当前页面的方法
2015/04/03 Javascript
JSONObject使用方法详解
2015/12/17 Javascript
jQuery实现只允许输入数字和小数点的方法
2016/03/02 Javascript
jQuery处理XML文件的几种方法
2016/06/14 Javascript
AngularJS基础 ng-value 指令简单示例
2016/08/03 Javascript
Javascript Event(事件)的传播与冒泡
2017/01/23 Javascript
细说webpack源码之compile流程-入口函数run
2017/12/26 Javascript
Angular2 自定义表单验证器的实现方法
2018/12/14 Javascript
vue-cli随机生成port源码的方法
2019/09/02 Javascript
JavaScript队列结构Queue实现过程解析
2020/03/07 Javascript
功能完善的小程序日历组件的实现
2020/03/31 Javascript
jQuery实现增删改查
2020/12/22 jQuery
python读写文件操作示例程序
2013/12/02 Python
Python交互环境下实现输入代码
2018/06/22 Python
浅谈利用numpy对矩阵进行归一化处理的方法
2018/07/11 Python
Windows下安装Scrapy
2018/10/17 Python
Python字符串函数strip()原理及用法详解
2020/07/23 Python
详解Python中string模块除去Str还剩下什么
2020/11/30 Python
CSS3的新特性介绍
2008/10/31 HTML / CSS
css3实现wifi信号逐渐增强效果实例
2017/08/09 HTML / CSS
编程用JAVA解析XML的方式
2013/07/07 面试题
开业庆典答谢词
2014/01/18 职场文书
工程质量承诺书
2014/03/27 职场文书
安全协议书
2014/04/23 职场文书
小学优秀班干部事迹材料
2014/05/25 职场文书
2014党员四风对照检查材料思想汇报
2014/09/17 职场文书
2014年英语教学工作总结
2014/12/17 职场文书
2015年党员公开承诺事项
2015/04/27 职场文书
监守自盗观后感
2015/06/10 职场文书
python通过opencv调用摄像头操作实例分析
2021/06/07 Python
Python如何加载模型并查看网络
2022/07/15 Python
Pytorch中expand()的使用(扩展某个维度)
2022/07/15 Python