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 26 PHP
收集的二十一个实用便利的PHP函数代码
Apr 22 PHP
php 学习资料零碎东西
Dec 04 PHP
php数组函数序列之ksort()对数组的元素键名进行升序排序,保持索引关系
Nov 02 PHP
关于php循环跳出的问题
Jul 01 PHP
php简单操作mysql数据库的类
Apr 16 PHP
php多重接口的实现方法
Jun 20 PHP
PHP实现批量修改文件后缀名的方法
Jul 30 PHP
PHP引用的调用方法分析
Apr 25 PHP
php 使用redis锁限制并发访问类示例
Nov 02 PHP
php使用scandir()函数扫描指定目录下所有文件示例
Jun 08 PHP
PHP7.0连接DB操作实例分析【基于mysqli】
Sep 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
老机欣赏|中国60年代精品收音机
2021/03/02 无线电
php实现保存submit内容之后禁止刷新
2014/03/19 PHP
php删除数组中重复元素的方法
2015/12/22 PHP
ext监听事件方法[初级篇]
2008/04/27 Javascript
html数组字符串拼接的最快方法
2009/09/16 Javascript
文本框input聚焦失焦样式实现代码
2012/10/12 Javascript
Javascript中的Array数组对象详谈
2014/03/03 Javascript
IE下双击checkbox反应延迟问题的解决方法
2014/03/27 Javascript
Js保留小数点的4种效果实现代码分享
2014/04/12 Javascript
js鼠标点击按钮切换图片-图片自动切换-点击左右按钮切换特效代码
2015/09/02 Javascript
jQuery实现标题有打字效果的焦点图代码
2015/11/16 Javascript
javascript实现简单的全选和反选功能
2016/01/05 Javascript
Js实现中国公民身份证号码有效性验证实例代码
2017/05/03 Javascript
js实现从左向右滑动式轮播图效果
2017/07/07 Javascript
深入理解React Native原生模块与JS模块通信的几种方式
2017/07/24 Javascript
默认浏览器设置及vue自动打开页面的方法
2018/09/21 Javascript
vue、react等单页面项目部署到服务器的方法及vue和react的区别
2018/09/29 Javascript
小试小程序云开发(小结)
2019/06/06 Javascript
node-red File读取好保存实例讲解
2019/09/11 Javascript
基于layui框架响应式布局的一些使用详解
2019/09/16 Javascript
在python里协程使用同步锁Lock的实例
2019/02/19 Python
Python装饰器限制函数运行时间超时则退出执行
2019/04/09 Python
Django框架实现在线考试系统的示例代码
2020/11/30 Python
python中的列表和元组区别分析
2020/12/30 Python
recorder.js 基于Html5录音功能的实现
2020/05/26 HTML / CSS
土耳其玩具商店:Toyzz Shop
2019/08/02 全球购物
马来西亚在线购物:POPLOOK.com
2019/12/09 全球购物
俄罗斯家居用品购物网站:Евродом
2020/11/21 全球购物
领导干部考察材料
2014/02/08 职场文书
如何写求职信
2014/05/24 职场文书
不尊敬老师的检讨书
2014/12/21 职场文书
小学一年级学生评语大全
2014/12/25 职场文书
预备党员介绍人意见
2015/06/01 职场文书
新郎父母婚礼致辞
2015/07/27 职场文书
Python进行区间取值案例讲解
2021/08/02 Python
Mysql忘记密码解决方法
2022/02/12 MySQL