php代码,主要把RGB改成随机生成,不是之前固定的七种颜色了:

 <?php
// ob_clean();
header("content-type:image/png");
$width = 110;
$height = 40;
$img = imagecreatetruecolor($width, $height);
$string = "hello";
//7种颜色,存入数组
$red = imagecolorallocate($img, 255, 0, 0);
$white = imagecolorallocate($img, 255, 255, 255);
$green = imagecolorallocate($img, 0, 255, 0);
$blue = imagecolorallocate($img, 0, 0, 255);
$aaa = imagecolorallocate($img, 255, 255, 0);
$bbb = imagecolorallocate($img, 0, 255, 255);
$ccc = imagecolorallocate($img, 255, 0, 255);
$colors = array($white,$red,$green,$blue,$aaa,$bbb,$ccc);
//颜色换成随机组成的RGB,每次循环都生成一次
$color = imagecolorallocate($img, rand(0,255), rand(0,255), rand(0,255));
//画点
for ($i=0; $i < 10; $i++) {
$color1 = imagecolorallocate($img, rand(0,255), rand(0,255), rand(0,255));
imagesetpixel($img, mt_rand(0,$width), mt_rand(0,$height), $color1);
}
//划线
for ($i=0; $i < 4; $i++) {
$color2 = imagecolorallocate($img, rand(0,255), rand(0,255), rand(0,255));
imageline($img, mt_rand(0,$width), mt_rand(0,$height), mt_rand(0,$width), mt_rand(0,$height), $color2);
}
//生成4位验证码
$a1 = range(0, 9);
$a2 = range(a, z);
$a3 = range(A, Z);
$a4 = array_merge($a1,$a2,$a3);
//改用shuffle打断顺序,array_slice取出前4个字母数字。不然如果用mt_rand在循环中每次取一个,还要生成字符串,不好比对
shuffle($a4);
$a5 = array_slice($a4,0,4);
$num = 4;
$fontsize = 20;
for ($i=0; $i < 4; $i++) {
$color3 = imagecolorallocate($img, rand(0,255), rand(0,255), rand(0,255));
imagettftext($img, $fontsize, mt_rand(-30,30), $width/$num*$i+5, 30, $color3, "Fonts/msyh.ttf", $a5[$i]);
}
imagepng($img);
?>

HTML代码(后缀也是php):

 <!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>注册</title>
</head>
<body>
<form action="test.php" method = "get">
<table>
<tr>
<td>用户名:</td>
<td><input type="text"><br/></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="text"><br/></td>
</tr>
<tr>
<td>验证码:</td>
<td><input type="text" name = "txtYanZheng"><br/></td>
</tr>
<tr>
<td></td>
<td><img src="yanzhengma.php" id = "yanzhengma" ></form></td>
</tr>
<tr>
<td><input type="submit" value="提交" ></td>
</tr>
</table>
<?php
$var = '
<script type="text/javascript">
onload = function(){
var yanzhengma = document.getElementById("yanzhengma");
yanzhengma.onclick = function(){
this.src = "yanzhengma.php?"+Math.random();
};
}
</script>
';
echo $var ?>
</body>
</html>

PHP学习笔记(7)验证码优化的更多相关文章

  1. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- Direct12优化

    原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- Direct12优化 第一章:向量代数 1.向量计算的时候,使用XMV ...

  2. 《深入理解java虚拟机》学习笔记之编译优化技术

    郑重声明:本片博客是学习<深入理解Java虚拟机>一书所记录的笔记,内容基本为书中知识. Java程序员有一个共识,以编译方式执行本地代码比解释方式更快,之所以有这样的共识,除去虚拟机解释 ...

  3. MySQL学习笔记-MySQL数据库优化实践[转]

    最近一段时间,我们整理了一些关于Percona,Linux,Flashcache,硬件设备的优化经验,分享给大家: 硬件 1.开启BBWC RAID卡都有写cache(Battery Backed W ...

  4. Webpack学习笔记九 webpack优化总结

    webpack 优化笔记 webpack4 自带的优化包括 swingTree(摇摆树)和作用域提升 swingTree 比如入口文件 index.js引入通用方法 util, 里面有 10个方法, ...

  5. CockroachDB学习笔记——[译]如何优化Go语言中的垃圾回收

    原文链接:https://www.cockroachlabs.com/blog/how-to-optimize-garbage-collection-in-go/ 原作者:Jessica Edward ...

  6. [PyTorch 学习笔记] 4.3 优化器

    本章代码: https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson4/optimizer_methods.py https: ...

  7. Android学习笔记之性能优化SparseArray

    PS:终于考完试了.来一发.微机原理充满了危机.不过好在数据库89分,还是非常欣慰的. 学习内容: 1.Android中SparseArray的使用..   昨天研究完横向二级菜单,发现其中使用了Sp ...

  8. 20160322 javaweb 学习笔记--response验证码实现

    package com.dzq.servlet; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; im ...

  9. MYSQL学习笔记——sql语句优化工具

    优化sql:思路: 使用explan->先查询type类型看看是all还是ref,然后判断 possible_keys (显示可能应用在这张表中的索引, 一个或多个.查询涉及到的字段是若存在索引 ...

  10. vue学习笔记——组件的优化

    Vue 应用性能优化指南 1 给组件定义name,然后在同级目录新建index文件: import Count from './count.vue' export Count; 2 优化大数据的列表 ...

随机推荐

  1. LESS,强大的CSS预处理语言

    虽然写的css不多,但是我已经切身感觉到了书写css的恶心...抛开最令人烦的浏览器兼容问题不说,这个语言本身就有不少问题. 最简单的,比如多个地方是同一个颜色的,如果可以写在一个样式里还没什么,但是 ...

  2. 配置Yum源repo文件及搭建本地Yum服务器

    分享一篇配置Yum源repo文件及搭建本地Yum服务器的方法,希望对大家有用. Yum源的话有三大类: Base Extra Epel Base:就是你下载的光盘镜像里面的DVD1Extra:就是你下 ...

  3. web.xml文件的作用及基本配置

    Java的web工程中的web.xml文件有什么作用呢?它是每个web工程都必须的吗? 一个web中完全可以没有web.xml文件,也就是说,web.xml文件并不是web工程必须的. 那什么时候需要 ...

  4. WebService 之 工作原理

    一.Web Service基本概念 Web Service 也叫 XML Web Service,WebService 是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求 ...

  5. vue - src for components || router(index.js)

    描述:重新编写一个组件 1.1 编写一个PrintName.vue <!--这里是模板 --> <template> <div class="hello&quo ...

  6. STL源码剖析(适配器)

    STL中由三类适配器,它们分别是: 1.容器适配器(stack.queue) 2.迭代器适配器(insert_iterator.reverse_iterator.iostream_iterator) ...

  7. 两名技术人员,历经8小时Piranha Games成功集成Xsolla

    w=580&h=304" alt="" width="580" height="304" style="max- ...

  8. 如何更改Docker默认的images存储位置

    Docker的镜像以及一些数据都是在/var/lib/docker目录下,它占用的是Linux的系统分区,也就是下面的/dev/vda1,当有多个镜像时,/dev/vda1的空间可能不足,我们可以把d ...

  9. 【MySQL】设置字符集UTF-8(解决)

    1.检查你需要的字符集,GBK或者UTF8 2.数据库是否是UTF8, 3.数据表是否是UTF8 4.模板是否设置了UTF-8 以上都没设置错误,那么继续往下看: 进入目标数据库,使用语句: SHOW ...

  10. scott权限

    有时scott数据被破坏了  可以回复 以下为 安装路径 dos下   @G:\app\Administrator\product\11.2.0\dbhome_1\RDBMS\ADMIN\scott. ...