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 相关文章推荐
一个程序下载的管理程序(一)
Oct 09 PHP
用文本文件制作留言板提示(上)
Oct 09 PHP
用PHP将网址字符串转换成超链接(网址或email)
May 25 PHP
关于PHP中Object对象的笔记分享
Jun 28 PHP
ThinkPHP3.0略缩图不能保存到子目录的解决方法
Sep 30 PHP
提高PHP性能的编码技巧以及性能优化详细解析
Aug 24 PHP
php无限遍历目录示例
Feb 21 PHP
QQ互联一键登录审核不通过的解决方案
Sep 10 PHP
PHP把MSSQL数据导入到MYSQL的方法
Dec 27 PHP
php接口数据加密、解密、验证签名
Mar 12 PHP
php 微信公众平台开发模式实现多客服的实例代码
Nov 07 PHP
PHP随机生成中文段落示例【测试网站内容时使用】
Apr 26 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 Array交叉表实现代码
2010/08/05 PHP
php下获取Discuz论坛登录用户名、用户组、用户ID等信息的实现代码
2010/12/29 PHP
PHP基于ORM方式操作MySQL数据库实例
2017/06/21 PHP
总结PHP代码规范、流程规范、git规范
2018/06/18 PHP
JavaScript 实现鼠标拖动元素实例代码
2014/02/24 Javascript
一个Action如何调用两个不同的方法
2014/05/22 Javascript
详解JavaScript的回调函数
2015/11/20 Javascript
JavaScript中利用jQuery绑定事件的几种方式小结
2016/03/06 Javascript
JavaScript操作表单实例讲解(上)
2016/06/20 Javascript
JS实现iframe自适应高度的方法(兼容IE与FireFox)
2016/06/24 Javascript
3分钟快速搭建nodejs本地服务器方法运行测试html/js
2017/04/01 NodeJs
关于Vue Router中路由守卫的应用及在全局导航守卫中检查元字段的方法
2018/12/09 Javascript
vue双向绑定及观察者模式详解
2019/03/19 Javascript
Node.js实现用户评论社区功能(体验前后端开发的乐趣)
2019/05/09 Javascript
vue实现路由懒加载及组件懒加载的方式
2019/06/11 Javascript
Vue + Scss 动态切换主题颜色实现换肤的示例代码
2020/04/27 Javascript
ES6 Symbol在对象中的作用实例分析
2020/06/06 Javascript
Python生成器(Generator)详解
2015/04/13 Python
简单谈谈python中的多进程
2016/11/06 Python
python实现树形打印目录结构
2018/03/29 Python
全面了解django的缓存机制及使用方法
2019/07/22 Python
python获取指定日期范围内的每一天,每个月,每季度的方法
2019/08/08 Python
wxPython实现分隔窗口
2019/11/19 Python
Python使用Turtle库绘制一棵西兰花
2019/11/23 Python
Python实现RGB与HSI颜色空间的互换方式
2019/11/27 Python
CSS3实现王者荣耀匹配人员加载页面的方法
2019/04/16 HTML / CSS
丝芙兰法国官网:SEPHORA法国
2016/09/01 全球购物
路德维希•贝克(LUDWIG BECK)中文官网:德国大型美妆百货
2020/09/19 全球购物
管理专员自荐信
2014/01/26 职场文书
2014年世界艾滋病日演讲稿
2014/11/28 职场文书
北京故宫导游词
2015/01/31 职场文书
签订劳动合同通知书
2015/04/16 职场文书
2016社区平安家庭事迹材料
2016/02/26 职场文书
考教师资格证不要错过的4个最佳时机
2019/07/17 职场文书
分享五个Node.js开发的优秀实践 
2022/04/07 NodeJs
Go微服务项目配置文件的定义和读取示例详解
2022/06/21 Golang