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环境配置 php5 mysql5 apache2 phpmyadmin安装与配置
Nov 17 PHP
PHP 地址栏信息的获取代码
Jan 07 PHP
PHP 文件类型判断代码
Mar 13 PHP
php中使用explode查找某个字符是否存在的方法
Jul 12 PHP
PHP开发工具ZendStudio下Xdebug工具使用说明详解
Nov 11 PHP
PHP中字符安全过滤函数使用小结
Feb 25 PHP
php获取网页里所有图片并存入数组的方法
Apr 06 PHP
php生成数字字母的验证码图片
Jul 14 PHP
PHP实现简单爬虫的方法
Jul 29 PHP
ajax+php实现无刷新验证手机号的实例
Dec 22 PHP
PHP切割整数工具类似微信红包金额分配的思路详解
Sep 18 PHP
php文件上传原理与实现方法详解
Dec 20 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实现短域名互转
2013/07/05 PHP
CodeIgniter框架常见用法工作总结
2017/03/16 PHP
toggle一个div显示或隐藏且可扩展成自定义下拉框
2013/09/12 Javascript
动态读取JSON解析键值对的方法
2014/06/03 Javascript
jquery ajax双击div可直接修改div中的内容
2016/03/04 Javascript
JS弹出层遮罩,隐藏背景页面滚动条细节优化分析
2016/04/29 Javascript
js以及jquery实现手风琴效果
2020/04/17 Javascript
jQuery EasyUI Draggable拖动组件
2017/03/01 Javascript
canvas压缩图片转换成base64格式输出文件流
2017/03/09 Javascript
js 获取元素的具体样式信息getcss(实例讲解)
2017/07/05 Javascript
React入门教程之Hello World以及环境搭建详解
2017/07/11 Javascript
vue-cli的eslint相关用法
2017/09/29 Javascript
Nginx 配置多站点vhost 的方法
2018/01/07 Javascript
微信小程序从注册账号到上架(图文详解)
2019/07/17 Javascript
微信小程序中button去除默认的边框实例代码
2019/08/01 Javascript
使用ThinkJs搭建微信中控服务的实现方法
2019/08/08 Javascript
JavaScript中的Proxy对象
2020/11/27 Javascript
python实现bucket排序算法实例分析
2015/05/04 Python
python文件操作之目录遍历实例分析
2015/05/20 Python
Python新手入门最容易犯的错误总结
2017/04/24 Python
python requests 使用快速入门
2017/08/31 Python
解决python3 Pycharm上连接数据库时报错的问题
2018/12/03 Python
nohup后台启动Python脚本,log不刷新的解决方法
2019/01/14 Python
python+selenium 脚本实现每天自动登记的思路详解
2020/03/11 Python
详解python tkinter包获取本地绝对路径(以获取图片并展示)
2020/09/04 Python
Python unittest discover批量执行代码实例
2020/09/08 Python
Python在centos7.6上安装python3.9的详细教程(默认python版本为2.7.5)
2020/10/15 Python
Python常用断言函数实例汇总
2020/11/30 Python
对CSS3选择器的研究(详解)
2016/09/16 HTML / CSS
英国著名国际平价时尚男装品牌:Topman
2016/08/27 全球购物
巴西购物网站:Onofre Agora
2020/06/08 全球购物
《会变的花树叶》教学反思
2014/02/10 职场文书
创业大赛策划书
2014/03/01 职场文书
班级活动总结格式
2014/08/30 职场文书
大学生党员自我剖析材料
2014/10/06 职场文书
python基于tkinter实现gif录屏功能
2021/05/19 Python