PHP生成图形验证码
在建站过程中,很多时候都会需要用户验证验证码等操作,比如:注册、登录、发表评论、获取资源等等,一方面可以验证当前用户的行为是否是爬虫、机器人等情况,给网站数据统计产生影响;另一方面可以防止用户大量刷取资源导致服务器资源紧张甚至宕机;现在验证码在表单中的应用越来越多了,但是如果用js来实现总觉得不太方便,因此可以使用php来实现。
测试地址:http://api.hmiwin.top/api/yzm.php
请求参数:num,text
参数说明:其中num是欲输出验证码的字符个数;text是欲输出验证码图片里面的内容
php源码如下:
<?php
//http://api.hmiwin.top/api/yzm.php
$num = $_GET['num'];
$text = $_GET['text'];
if($num=="")//如果num参数为空默认等于4
$num = 4;
check_code(150, 50, $num ,$text);//调用,其中$num是欲输出验证码的字符个数,$text是欲输出验证码图片里面的内容
function check_code($width , $height , $num , $string ,$type = 'jpeg' ) {
$img = imagecreate($width, $height);
for ($i = 0; $i < $num; $i++) {
$rand = mt_rand(0, 2);
switch($rand) {
case 0:
$ascii = mt_rand(48, 57);
break;
case 1:
$ascii = mt_rand(65, 90);
break;
case 2:
$ascii = mt_rand(97, 122);
break;
}
$string .= sprintf('%c', $ascii);
}
imagefilledrectangle($img, 0, 0, $width, $height, randBg($img));
for ($i = 0; $i < 50; $i++) {
imagesetpixel($img, mt_rand(0, $width), mt_rand(0, $height), randPix($img));
}
for ($i = 0; $i < $num; $i++) {
$x = floor($width/$num) *$i + 2;
$y = mt_rand(0, $height - 15);
imagechar($img, 5, $x, $y, $string[$i], randPix($img));
}
$func = 'image' . $type;
$header = 'content-type:image/' . $type;
if (function_exists($func)) {
header($header);
$func($img);
} else {
exit('不支持');
}
imagedestroy($img);
return $string;
}
function randBg($img) {
return imagecolorallocate($img, mt_rand(130, 255), mt_rand(130, 255), mt_rand(130, 255));
}
function randPix($img) {
return imagecolorallocate($img, mt_rand(0, 120), mt_rand(0, 120), mt_rand(0, 120));
}
?>
欢迎转载,转载请申明来源地址!
PHP生成图形验证码的更多相关文章
- C#生成图形验证码
先看效果: 再上代码 public class CaptchaHelper { private static Random rand = new Random(); private static in ...
- PHP5 GD库生成图形验证码(汉字)
PHP5 GD库生成图形验证码且带有汉字的实例分享. 1,利用GD库函数生成图片,并在图片上写指定字符imagecreatetruecolor 新建一个真彩色图像imagecolorallocate ...
- PHP5生成图形验证码(有汉字)
利用PHP5中GD库生成图形验证码 类似于下面这样 1.利用GD库函数生成图片,并在图片上写指定字符 imagecreatetruecolor 新建一个真彩色图像 imagecolora ...
- java生成图形验证码
效果图 import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.Buf ...
- ASP.NET中如何生成图形验证码
通常生成一个图形验证码主要 有3个步骤: (1)随机产生一个长度为N的随机字符串,N的值可由开发可由开发人员自行设置.该字符串可以包含数字.字母等. (2)将随机生成的字符串创建成图片,并显示. (3 ...
- Net Core 生成图形验证码
1. NetCore ZKweb 在我第一次绘制图形验证码时是采用的ZKweb的绘制库,奉上代码参考 public byte[] GetVerifyCode(out string ...
- python 生成图形验证码
文章链接:https://mp.weixin.qq.com/s/LYUBRNallHcjnhJb1R3ZBg 日常在网站使用过程中经常遇到图形验证,今天准备自己做个图形验证码,这算是个简单的功能,也适 ...
- (转)Android 之生成图形验证码
import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; impor ...
- 【Java】生成图形验证码
本章介绍一个能生成比较好看的图形验证码类 生成验证码工具类 package com.util; import java.awt.Color; import java.awt.Font; import ...
- Asp.Net Core 生成图形验证码
前几天有朋友问我怎么生成图片验证码,话不多说直接上代码. 支持.NET CORE开源.助力.NET Core社区发展. using System; using System.IO; using Sys ...
随机推荐
- Jmeter监控平台搭建:JMeter+InfluxDB+Grafana
背景 平时一般用Jmeter的Gui模式,添加对应的插件,查看每秒线程数.TPS.响应时间等曲线,其实高并发是不建议这么看的. 解决方案 可以搭配InfluxDB+Grafana工具,使Jmeter异 ...
- 图数据库|正反向边的最终一致性——TOSS 介绍
本文首发于 Nebula Graph Community 公众号 Nebula Graph v2.6 当中比较重要的特性之一便是 TOSS.通过本文,我将带你全方位了解 TOSS 为何物. 从一条 G ...
- 联邦平均算法(Federated Averaging Algorithm,FedAvg)
设一共有\(K\)个客户机, 中心服务器初始化模型参数,执行若干轮(round),每轮选取至少1个至多\(K\)个客户机参与训练,接下来每个被选中的客户机同时在自己的本地根据服务器下发的本轮(\(t\ ...
- python学习-Day19
目录 今日内容详细 正则表达式 开端 概念及相关符号 正则表达式之字符组 正则表达式之特殊符号 正则表达式之量词 小试牛刀 实现手机号码校验功能 复杂正则的编写 校验用户身份证号码 校验邮箱.快递单号 ...
- VMware16搭建Ubuntu22.04,更新为国内下载源,安装open-vm-tools,用SecureCRT远程连接
前期准备 1.VMware16(转载:下载安装流程:(https://www.bilibili.com/read/cv9694457)) 2.Ubuntu22.04----iso镜像文件(下载地址:( ...
- Java多线程——实现
"java多线程的实现--几乎都要和java.lang.Thread打交道" 方式一:继承于Thread类 1.创建一个继承于Thread类的子类 2.重写Thread类的run( ...
- 史上最全Redis面试题(2020最新版)
一个执着于技术的公众号 导读:2020 年最新版 Redis面试题,两万字干货,为方便读者阅读,已整理为PDF文档,后台回复『redis』即可领取.希望对大家有帮助! 概述 1. 什么是Redis? ...
- 关于控制台报错“Cannot use import statement outside a module”问题的解决
问题还原: 1.首先在main.js里 使用ES6语法import引入另外一个js模块. 2.此时将main.js在index.html中通过script标签引入,如下 3.右键通过vscode提供的 ...
- 图解BM(Boyer-Moore)字符串匹配算法+代码实现
简介 本篇文章主要分为两个大的部分,第一部分通过图解的方式讲解BM算法,第二部分则代码实现一个简易的BM算法. 基本概念 bm是一个字符串匹配算法,有实验统计,该算法是著名kmp算法性能的3-4倍,其 ...
- OPRF
在PSI中经常用到OPRF技术,现在系统学习一下. PRF Pseudo Random Function,伪随机函数,主要就是用来产生为伪随机数的. 伪随机数 什么伪随机数? 伪随机数是用确定性的算法 ...