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 print EOF实现方法
May 21 PHP
PHP+SQL 注入攻击的技术实现以及预防办法
Jan 27 PHP
在MongoDB中模拟Auto Increment的php代码
Mar 06 PHP
php array_walk() 数组函数
Jul 12 PHP
PHP及Zend Engine的线程安全模型分析
Nov 10 PHP
跟我学Laravel之路由
Oct 15 PHP
php实现多维数组中每个单元值(数字)翻倍的方法
Feb 16 PHP
PHP实现过滤掉非汉字字符只保留中文字符
Jun 04 PHP
php实现比较两个文件夹异同的方法
Jun 18 PHP
PHP+Mysql+jQuery文件下载次数统计实例讲解
Oct 10 PHP
php ucwords() 函数将字符串中每个单词的首字符转换为大写(实现代码)
May 12 PHP
ThinkPHP框架实现FTP图片上传功能示例
Apr 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
说说PHP的autoLoad自动加载机制
2012/09/27 PHP
处理单名多值表单的详解
2013/06/08 PHP
php操作mysqli(示例代码)
2013/10/28 PHP
PHP中addslashes()和stripslashes()实现字符串转义和还原用法实例
2016/01/07 PHP
左侧是表头的JS表格控件(自写,网上没有的)
2013/06/04 Javascript
JS比较2个日期间隔的示例代码
2014/04/15 Javascript
jQuery定义背景动态切换效果的方法
2015/03/23 Javascript
12行javascript代码绘制一个八卦图
2015/04/02 Javascript
javascript Array 数组常用方法
2015/04/05 Javascript
JS创建事件的三种方法(实例代码)
2016/05/12 Javascript
jQuery中的siblings()是什么意思(推荐)
2016/12/29 Javascript
深入理解Angularjs中的$resource服务
2016/12/31 Javascript
jQuery实现简单的滑动导航代码(移动端)
2017/05/22 jQuery
Vue与Node.js通过socket.io通信的示例代码
2018/07/25 Javascript
vue观察模式浅析
2018/09/25 Javascript
Vue CLI 2.x搭建vue(目录最全分析)
2019/02/27 Javascript
vuex存储复杂参数(如对象数组等)刷新数据丢失的解决方法
2019/11/05 Javascript
简单了解常用的JavaScript 库
2020/07/16 Javascript
使用jQuery实现购物车
2020/10/29 jQuery
解决vue初始化项目一直停在downloading template的问题
2020/11/09 Javascript
零基础写python爬虫之爬虫的定义及URL构成
2014/11/04 Python
python访问系统环境变量的方法
2015/04/29 Python
浅析python中SQLAlchemy排序的一个坑
2017/02/24 Python
利用numpy实现一、二维数组的拼接简单代码示例
2017/12/15 Python
Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
2018/03/19 Python
python使用matplotlib绘制热图
2018/11/07 Python
Python中单线程、多线程和多进程的效率对比实验实例
2019/05/14 Python
通过cmd进入python的实例操作
2019/06/26 Python
Django如何实现上传图片功能
2019/08/16 Python
Tensorflow的常用矩阵生成方式
2020/01/04 Python
Python如何读取文件中图片格式
2020/01/13 Python
欧洲第一的摇滚和金属乐队服装网站:EMP
2017/10/26 全球购物
国税会议欢迎词
2014/01/16 职场文书
道德模范先进事迹
2014/02/14 职场文书
小班开学寄语
2014/04/04 职场文书
日本读研:怎样写好一篇日本研究计划书?
2019/07/15 职场文书