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 相关文章推荐
PHP5.0正式发布 不完全兼容PHP4 新增多项功能
Oct 09 PHP
php中随机显示图片的函数代码
Jun 23 PHP
PHP根据IP地址获取所在城市具体实现
Nov 27 PHP
php根据操作系统转换文件名大小写的方法
Feb 24 PHP
PHP实现动态柱状图改进版
Mar 30 PHP
php抽象类用法实例分析
Jul 07 PHP
PHP简单操作MongoDB的方法(安装及增删改查)
May 26 PHP
再谈PHP中单双引号的区别详解
Jun 12 PHP
PHP使用mysql与mysqli连接Mysql数据库用法示例
Jul 07 PHP
PHP中overload与override的区别
Feb 13 PHP
lnmp安装多版本PHP共存的方法详解
Aug 02 PHP
PDO::getAvailableDrivers讲解
Jan 28 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中两种缩放图片的函数,为图片添加水印
2013/06/14 PHP
使用PHP求两个文件的相对路径
2013/06/20 PHP
PHP实现抓取Google IP并自动修改hosts文件
2015/02/12 PHP
php上传图片并压缩的实现方法
2015/12/22 PHP
php mysql实现mysql_select_db选择数据库
2016/12/30 PHP
如何让动态插入的javascript脚本代码跑起来。
2007/01/09 Javascript
Prototype使用指南之ajax
2007/01/10 Javascript
可以文本显示的公告栏的js代码
2007/03/11 Javascript
我的javascript 函数链之演变
2011/04/07 Javascript
理解JavaScript的prototype属性
2012/02/11 Javascript
javascript框架设计读书笔记之模块加载系统
2014/12/02 Javascript
jQuery实现行文字链接提示效果的方法
2015/03/10 Javascript
vue 右键菜单插件 简单、可扩展、样式自定义的右键菜单
2018/11/29 Javascript
vue-父子组件和ref实例详解
2019/11/10 Javascript
ES6扩展运算符和rest运算符用法实例分析
2020/05/23 Javascript
基于小程序请求接口wx.request封装的类axios请求
2020/07/02 Javascript
Cython 三分钟入门教程
2009/09/17 Python
跟老齐学Python之有容乃大的list(4)
2014/09/28 Python
使用Python的Twisted框架编写简单的网络客户端
2015/04/16 Python
浅谈python多线程和队列管理shell程序
2015/08/04 Python
使用pytorch进行图像的顺序读取方法
2018/07/27 Python
python添加模块搜索路径和包的导入方法
2019/01/19 Python
python打开windows应用程序的实例
2019/06/28 Python
pandas分区间,算频率的实例
2019/07/04 Python
Tensorflow tensor 数学运算和逻辑运算方式
2020/06/30 Python
python 利用Pyinstaller打包Web项目
2020/10/23 Python
美国巧克力喷泉品牌:Sephra
2019/05/05 全球购物
工商学院毕业生个人自我评价
2013/09/19 职场文书
自动化工程专业个人应聘自荐信
2013/09/26 职场文书
毕业生精彩的自我评价分享
2013/10/06 职场文书
HR喜欢的自荐信格式
2013/10/08 职场文书
《金钱的魔力》教学反思
2014/02/24 职场文书
遗嘱公证书标准样本
2014/04/08 职场文书
跑操口号
2014/06/12 职场文书
个人欠款协议书范本2014
2014/11/02 职场文书
基于Python实现的购物商城管理系统
2021/04/27 Python