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 相关文章推荐
使用PHPMYADMIN操作mysql数据库添加新用户和数据库的方法
Apr 02 PHP
php学习笔记 面向对象的构造与析构方法
Jun 13 PHP
Zend Studio去除编辑器的语法警告设置方法
Oct 24 PHP
PHP的构造方法,析构方法和this关键字详细介绍
Oct 22 PHP
PHP的一个完美GIF等比缩放类,附带去除缩放黑背景
Apr 01 PHP
php实现用于删除整个目录的递归函数
Mar 16 PHP
php实现向javascript传递数组的方法
Jul 27 PHP
PHP使用Memcache时模拟命名空间及缓存失效问题的解决
Feb 27 PHP
php获取文件后缀的9种方法
Mar 22 PHP
PHPCMS V9 添加二级导航的思路详解
Oct 20 PHP
PHP实现接收二进制流转换成图片的方法
Jan 10 PHP
PHP常见过waf webshell以及最简单的检测方法
May 21 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
最贵的咖啡是怎么产生的,它的风味怎么样?
2021/03/04 新手入门
php自定义函数实现JS的escape的方法示例
2016/07/07 PHP
php利用ffmpeg提取视频中音频与视频画面的方法详解
2017/06/07 PHP
Laravel框架使用Seeder实现自动填充数据功能
2018/06/13 PHP
php 多个变量指向同一个引用($b = &amp;$a)用法分析
2019/11/13 PHP
phpwind放自动注册方法
2006/12/02 Javascript
jquery1.4后 jqDrag 拖动 不可用
2010/02/06 Javascript
Iframe自适应高度绝对好使的代码 兼容IE,遨游,火狐
2011/01/27 Javascript
Javascript代码在页面加载时的执行顺序介绍
2013/05/03 Javascript
js实现绿白相间竖向网页百叶窗动画切换效果
2015/03/02 Javascript
js文字横向滚动特效
2015/11/11 Javascript
AngularJS应用开发思维之依赖注入3
2016/08/19 Javascript
Javascript 实现微信分享(QQ、朋友圈、分享给朋友)
2016/10/21 Javascript
js无提示关闭浏览器窗口的两种方法分析
2016/11/06 Javascript
js轮播图透明度切换(带上下页和底部圆点切换)
2017/04/27 Javascript
jquery+css实现简单的图片轮播效果
2017/08/07 jQuery
Vue.js如何实现路由懒加载浅析
2017/08/14 Javascript
vue-cli脚手架config目录下index.js配置文件的方法
2018/03/13 Javascript
Vue三层嵌套路由的示例代码
2018/05/05 Javascript
angular-tree-component的使用详解
2018/07/30 Javascript
对Vue- 动态元素属性及v-bind和v-model的区别详解
2018/08/27 Javascript
Node+OCR实现图像文字识别功能
2018/11/26 Javascript
webpack-url-loader 解决项目中图片打包路径问题
2019/02/15 Javascript
mpvue实现小程序签到金币掉落动画(api实现)
2019/10/17 Javascript
Python中的进程分支fork和exec详解
2015/04/11 Python
python使用itchat模块给心爱的人每天发天气预报
2019/11/25 Python
Python实现手机号自动判断男女性别(实例解析)
2019/12/22 Python
python中yield的用法详解
2021/01/13 Python
Lowe’s加拿大:家居装修、翻新和五金店
2019/12/06 全球购物
安踏官方商城:anta.cn
2019/12/16 全球购物
DBA的职责都有哪些
2012/05/16 面试题
《中国的气候》教学反思
2014/02/23 职场文书
2014年党建工作总结
2014/11/11 职场文书
电气工程师岗位职责
2015/02/12 职场文书
国博复兴之路观后感
2015/06/02 职场文书
2016初一新生军训心得体会
2016/01/11 职场文书