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中在数据库中保存Checkbox数据(1)
Oct 09 PHP
php出现Cannot modify header information问题的解决方法大全
Apr 09 PHP
php 如何获取数组第一个值
Aug 06 PHP
php读取大文件示例分享(文件操作类)
Apr 13 PHP
ThinkPHP添加更新标签的方法
Dec 05 PHP
thinkphp备份数据库的方法分享
Jan 04 PHP
php实现异步数据调用的方法
Dec 24 PHP
ThinkPHP中limit()使用方法详解
Apr 19 PHP
详解如何在云服务器上部署Laravel
Jun 30 PHP
利用PHP判断是否是连乘数字串的方法示例
Jul 03 PHP
ThinkPHP框架实现导出excel数据的方法示例【基于PHPExcel】
May 12 PHP
Yii2框架实现利用mpdf创建pdf文件功能示例
Feb 08 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
Yii结合CKEditor实现图片上传功能
2014/06/13 PHP
详解WordPress中用于更新和获取用户选项数据的PHP函数
2016/03/08 PHP
thinkPHP商城公告功能开发问题分析
2016/12/01 PHP
php+javascript实现的动态显示服务器运行程序进度条功能示例
2017/08/07 PHP
JavaScript Object的extend是一个常用的功能
2009/12/02 Javascript
script标签的 charset 属性使用说明
2010/12/04 Javascript
jquery中dom操作和事件的实例学习 仿yahoo邮箱登录框的提示效果
2011/11/30 Javascript
angularJS 中input示例分享
2015/02/09 Javascript
详解JavaScript基于面向对象之创建对象(2)
2015/12/10 Javascript
jQuery文字横向滚动效果的实现代码
2016/05/31 Javascript
JS中的数组方法笔记整理
2016/07/26 Javascript
jQuery实现的无限级下拉菜单功能示例
2016/09/12 Javascript
js倒计时小实例(多次定时)
2016/12/08 Javascript
详解使用webpack构建多页面应用
2017/12/21 Javascript
vue 界面刷新数据被清除 localStorage的使用详解
2018/09/16 Javascript
vue实现百度语音合成的实例讲解
2019/10/14 Javascript
小程序外卖订单界面的示例代码
2019/12/30 Javascript
基于JavaScript或jQuery实现网站夜间/高亮模式
2020/05/30 jQuery
Python的ORM框架SQLAlchemy入门教程
2014/04/28 Python
从零学Python之入门(五)缩进和选择
2014/05/27 Python
Python将DataFrame的某一列作为index的方法
2018/04/08 Python
Numpy 中的矩阵求逆实例
2019/08/26 Python
django框架使用views.py的函数对表进行增删改查内容操作详解【models.py中表的创建、views.py中函数的使用,基于对象的跨表查询】
2019/12/12 Python
如何使用Python破解ZIP或RAR压缩文件密码
2020/01/09 Python
Python实现结构体代码实例
2020/02/10 Python
python+selenium 脚本实现每天自动登记的思路详解
2020/03/11 Python
canvas拼图功能实现代码示例
2018/11/21 HTML / CSS
写好求职信第一句话的技巧
2013/10/26 职场文书
语文教育专业应届生求职信
2013/11/23 职场文书
2014新年寄语
2014/01/20 职场文书
幼儿园课题实施方案
2014/05/14 职场文书
个人工作保证书
2015/02/28 职场文书
学校教师师德师风承诺书
2015/04/28 职场文书
安全教育主题班会教案
2015/08/12 职场文书
详解Python中的进程和线程
2021/06/23 Python
使用@Value值注入及配置文件组件扫描
2021/07/09 Java/Android