生成验证码

思路:先定义验证码函数getCode()

//绘制验证码
  $num = 4; //字符长度
  getCode($num, 2);

  1、创建画布,分配颜色 imagecreatetruecolor()
    $height 
    $width = $num*20;    //假设每个字的大小为18
    $im = imagecreatetruecolor($width, $height); //创建一个真彩色画布
    $bg = imagecolorallocate($im, rand(200,250), rand(250,255), rand(150, 255)); //定义背景颜色图像
    $color[] = imagecolorallocate($im, 240,240,240); //定义字体颜色【可以数组形式存储,定义某些深色字体】
    

  2、开始绘画(一切都在画布$im上进行)
    imagefill($im, 0,0, $bg);    //区域填充(把背景填充到画布)
    imagerectangle($im, 0,0, $width-1, $height-1, $color[rand(0,3)]); //定义个边框

    //绘制验证码:逐字输出
    for()
      imagettftext($im, rand(16,18), rand(-40,40), 8+(18*$i),18, $color[rand(0,3)], "msyh.ttc", $str[$i]);
    //随机添加干扰点(点数自定)
    for(){
      $c = imagecolorallocate($im, rand(0,255), rand(0,255), rand(0,255)); //干扰点颜色
      imagesetpixel($im, rand(0,$width), rand(0,$height), $c);
    //随机添加干扰线(线数自定)
    for(){
      $c = imagecolorallocate($im, rand(0,255), rand(0,255), rand(0,255)); //干扰线颜色
      imageline($im, rand(0,$width), rand(0,$height), rand(0,$width), rand(0,$height), $c);

  3、输出图像
    header("Content-Type:image/png"); //设置响应头(此前不能有输出
    imagepng($im);

  4、销毁图片
    imagedestroy($im);

//自定义函数,获取验证码
  function getCode($m=4, $type=1)
  {
    $str = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    $t = array(9, 35, strlen($str)-1); //类型划分
    $c = "";
    for($i=0; $i<$m; $i++)
    $c .= $str[rand(0, $t[$type])];

//调用验证码,onclick可实现点击图片刷新

  <img src="code.php" /onclick="this.src='code.php?id='+Math.random()'">

PHP.19-验证码生成的更多相关文章

  1. JAVA 验证码生成(转)

    最近做了一下验证码的功能,网上找了一篇还不错,引用下:http://blog.csdn.net/ruixue0117/article/details/22829557 这篇文章非常好,但是web和js ...

  2. [转]php 图片验证码生成 前后台验证

    本文转自:https://www.cnblogs.com/xiaoyezi/p/3541195.html 自己从前一段时间做了个php小项目,关于生成图片验证码生成和后台的验证,把自己用到的东西总结一 ...

  3. php 图片验证码生成 前后台验证

    自己从前一段时间做了个php小项目,关于生成图片验证码生成和后台的验证,把自己用到的东西总结一下,希望大家在用到相关问题的时候可以有一定的参考性. 首先,php验证码生成. 代码如下: 1.生成图像代 ...

  4. Atitit 图片 验证码生成attilax总结

    Atitit 图片 验证码生成attilax总结 1.1. 图片验证码总结1 1.2. 镂空文字  打散 干扰线 文字扭曲 粘连2 1.1. 图片验证码总结 因此,CAPTCHA在图片验证码这一应用点 ...

  5. ASP.NET验证码生成与识别

    一般验证码页面只输出一个图片而不进行其他业务处理,所以验证码一般放在一般处理程序(httpHandler)页面中,而如果将验证码生成代码放到一般处理程序中,要将生成验证码保存在Session中,这里我 ...

  6. ajax原理,验证码生成原理

    什么是ajax AJAX:”Asynchronous JavaScript and XML” 中文意思:异步JavaScript和XML 指一种创建交互式网页应用的网页开发技术.   不是指一种单一的 ...

  7. .net验证码生成及使用

    验证码的作用: 几年前,大部分网站.论坛之类的是没有验证码的,因为对于一般用户来说验证码只是增加了用户的操作,降低了用户的体验.但是后来各种灌水机器人.投票机器人.恶意注册机器人层出不穷,大大增加了网 ...

  8. 验证码生成-->漂亮啊

    验证码不用输出太多的HTML代码,直接创建一个一般处理程序,直接上代码 public class VCode : IHttpHandler { HttpContext context = null; ...

  9. Web---图片验证码生成教程详解-从简单到复杂-从本地到前后台

    首先,我们先来看本地如何生成图片验证码的,再来写输出到网页的验证码如何实现. 先来看最简单的-实现的功能是,将一个字符串变成图片写入到文件中 实现代码: package cn.hncu.img; im ...

  10. 利用谷歌 kaptcha 进行验证码生成

    package main.com.smart.controller; import com.google.code.kaptcha.Producer; import main.com.smart.ut ...

随机推荐

  1. appium (三)执行过程

      转自http://blog.csdn.net/Yejianyun1/article/details/56012470 appium界面运行过程: 1.启动一个http服务器:127.0.0.1:4 ...

  2. [topcoder]SRM 646 DIV 2

    第一题:K等于1或者2,非常简单.略.K更多的情况,http://www.cnblogs.com/lautsie/p/4242975.html,值得思考. 第二题:http://www.cnblogs ...

  3. SAP Fiori里的List是如何做到懒加载Lazy load的

    今天一同事问我这个问题:S/4HANA Fiori应用里的列表,一旦Scroll到底部就会自动向后台发起新的请求把更多的数据读取到前台显示. 以Product Master这个应用为例,我点击搜索之后 ...

  4. Recent plan + Summary (two weeks)

    Plan: Homework: B365 (next week) B392, B335 Interview: Friday, do the assignment Thursday Summary: I ...

  5. POJ-2503 Babelfish---map或者hash

    题目链接: https://vjudge.net/problem/POJ-2503 题目大意: 就像查找一本字典,根据输入的条目和要查询的单词,给出查询结果(每个单词长度不超过10) 解题思路: ma ...

  6. JAVA HTTP连接(HttpURLConnection)中使用代理(Proxy)及其验证(Authentication)

    public static void main(String[] args) { // TODO Auto-generated method stub try { URL url = new URL( ...

  7. C#中 property 与 attribute的区别?

    C#中 property 与 attribute的区别?答:attribute:自定义属性的基类;property :类中的属性

  8. HTML第一章:初始HTML

    设置ws字体大小:左上角file-->Settings--->在搜索框中输入font 网页的第一行一定是<!DOCTYPE html>:网页声明,代表这个页面是h5页面html ...

  9. java循环删除List元素的方法总结

    1.for循环 2.迭代器 3.过渡法 import java.util.*; /** * Created by HP on 2018/8/2. */ public class Test { publ ...

  10. c++ 11 线程池的简单封装

    #include <condition_variable> #include <queue> #include <thread> #include <vect ...