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转成EXE文件
Oct 09 PHP
给多个地址发邮件的类
Oct 09 PHP
PHP获得用户使用的代理服务器ip即真实ip
Dec 31 PHP
php编程实现获取excel文档内容的代码实例
Jun 28 PHP
FireFox浏览器使用Javascript上传大文件
Oct 30 PHP
ECshop 迁移到 PHP7版本时遇到的兼容性问题
Feb 15 PHP
Yii2创建控制器(createController)方法详解
Jul 23 PHP
php+js实现裁剪任意形状图片
Oct 31 PHP
Discuz不使用插件实现简单的打赏功能
Mar 21 PHP
thinkphp框架类库扩展操作示例
Nov 26 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
Feb 29 PHP
laravel使用数据库测试注意事项
Apr 10 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获取网页内容方法总结
2008/12/04 PHP
php源代码安装常见错误与解决办法分享
2013/05/28 PHP
PHPMailer发送HTML内容、带附件的邮件实例
2014/07/01 PHP
PHP使用Pthread实现的多线程操作实例
2015/11/14 PHP
PHP中大括号'{}'用法实例总结
2017/02/08 PHP
PHP中mysqli_get_server_version()的实例用法
2020/02/03 PHP
jQuery弹出层插件简化版代码下载
2008/10/16 Javascript
ext 同步和异步示例代码
2009/09/18 Javascript
Js,alert出现乱码问题的解决方法
2013/06/19 Javascript
jQuery制作的别致导航有阴影背景高亮模式窗口
2014/04/15 Javascript
jquery 按键盘上的enter事件
2014/05/11 Javascript
js实现的捐赠管理完整实例
2015/01/20 Javascript
总结在前端排序中遇到的问题
2016/07/19 Javascript
JS实现动态增加和删除li标签行的实例代码
2016/10/16 Javascript
js/jquery控制页面动态加载数据 滑动滚动条自动加载事件的方法
2017/02/08 Javascript
BootStrap的select2既可以查询又可以输入的实现代码
2017/02/17 Javascript
vue使用axios跨域请求数据问题详解
2017/10/18 Javascript
JavaScript继承与多继承实例分析
2018/05/26 Javascript
js实现图片局部放大效果详解
2019/03/18 Javascript
JSON获取属性值方法代码实例
2020/06/30 Javascript
浅析JavaScript 函数防抖和节流
2020/07/13 Javascript
[02:35]DOTA2英雄基础教程 末日使者
2013/12/04 DOTA
python使用新浪微博api上传图片到微博示例
2014/01/10 Python
wxPython学习之主框架实例
2014/09/28 Python
Python中基本的日期时间处理的学习教程
2015/10/16 Python
Python爬虫小技巧之伪造随机的User-Agent
2018/09/13 Python
python使用matplotlib绘制热图
2018/11/07 Python
75条笑死人的知乎神回复,用60行代码就爬完了
2019/05/06 Python
django框架自定义模板标签(template tag)操作示例
2019/06/24 Python
Python 文件操作之读取文件(read),文件指针与写入文件(write),文件打开方式示例
2019/09/29 Python
python创建n行m列数组示例
2019/12/02 Python
Python爬虫之Selenium多窗口切换的实现
2020/12/04 Python
美国著名童装品牌:OshKosh B’gosh
2016/08/05 全球购物
后备干部考察材料
2014/02/12 职场文书
北京大学中文系教授推荐的10本小说
2019/08/08 职场文书
python实现自动清理文件夹旧文件
2021/05/10 Python