PHP源生验证码

1.yzm.php

<?php

session_start();//必须位于脚本的最顶端

$image=imagecreatetruecolor(100, 30);//imagecreatetruecolor函数建一个真彩色图像

//生成彩色像素

$bgcolor=imagecolorallocate($image, 255, 255, 255);//白色背景     imagecolorallocate函数为一幅图像分配颜色

$textcolor=imagecolorallocate($image,0,0,255);//蓝色文本

//填充函数,xy确定坐标,color颜色执行区域填充颜色

imagefill($image, 0, 0, $bgcolor);

$captch_code="";//初始空值

//该循环,循环取数

for($i=0;$i<4;$i++){

$fontsize=6;

$x=($i*25)+rand(5,10);

$y=rand(5,10);//位置随机

//  $fontcontent=$i>2?chr(rand(97,122)):chr(rand(65,90));//是小写,否则是大写

$data=‘abcdefghijkmnpqrstuvwxyz3456789‘;

$fontcontent=substr($data,rand(0,strlen($data)-1),1);//strlen仅仅是一个计数器的工作  含数字和字母的验证码

//可以理解为数组长度0到30

$fontcolor=imagecolorallocate($image,rand(0,100),rand(0,100),rand(0,100));//随机的rgb()值可以自己定

imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor); //水平地画一行字符串

$captch_code.=$fontcontent;

}

$_SESSION[‘authcode‘]=$captch_code;//将变量保存再session的authcode变量中

//该循环,循环画背景干扰的点

for($m=0;$m<=600;$m++){

$x2=rand(1,99);

$y2=rand(1,99);

$pointcolor=imagecolorallocate($image,rand(0,255),rand(0,255),rand(0,255));

imagesetpixel($image,$x2,$y2,$pointcolor);// 水平地画一串像素点

}

//该循环,循环画干扰直线

for ($i=0;$i<=10;$i++){

$x1=rand(0,99);

$y1=rand(0,99);

$x2=rand(0,99);

$y2=rand(0,99);

$linecolor=imagecolorallocate($image,rand(0,255),rand(0,255),rand(0,255));

imageline($image,$x1,$y1,$x2,$y2,$linecolor);//画一条线段

}

header(‘content-type:image/png‘);

imagepng($image);

//销毁

imagedestroy($image);

?>

___________________________________________________________________________________________________________________________________
2.yzm.html

<?php

// session 存值并匹配用户输入值

if (isset($_REQUEST[‘authcode‘])) {

session_start();

if (strtolower($_REQUEST[‘authcode‘])==$_SESSION[‘authcode‘]) {//strtolower转化为小写的函数

echo"输入正确!";

# code...

}

else{

echo"输入错误!";

}

exit();

}

?>

<!DOCTYPE html>

<html lang="en">

<head>

<!-- 简单的表单提交代码 -->

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<meta http-equiv="X-UA-Compatible" content="ie=edge">

<title>简单验证码的实现</title>

</head>

<body>

<form method="post" action="yzm1.php">

<p>验证码图片:<img src="yzm.php" onClick="this.src=‘yzm.php?nocache=‘+Math.random()" style="cursor:hand" alt="点击换一张"/>点击图片可更换验证码</p>

<p>请输入图片中的内容:<input type="text" name="authcode" value=""/></p>

<p><input type="submit" width="20px" height=19px value="提交"></input></p>

</form>

</body>

</html>

原文地址:https://www.cnblogs.com/wangguizhong/p/12019325.html

时间: 2024-10-18 19:04:45

PHP源生验证码的相关文章

JAVA中的验证码生成

生成验证码的工具类:VerifyCodeUtils(有几种实现方式,放入流,保存文件等) public class VerifyCodeUtils { //使用到Algerian字体,系统里没有的话需要安装字体,字体只显示大写,去掉了1,0,i,o几个容易混淆的字符 public static final String VERIFY_CODES = "23456789ABCDEFGHJKLMNPQRSTUVWXYZ"; private static Random random = ne

生成随机验证码图片的工具类

package utils; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.geom.AffineTransform; import java.awt.image.BufferedImage; import java.io.ByteArrayOutpu

JAVA图片验证码(转自“云在青山”)

首先创建一个生成图片的类,设置一些请求参数,生成随机的字符串,然后字符串传给生成验证码图片的类进行处理,完成后输出到页面 1.创建验证码生成类 package hh.com.util; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRespons

java验证码的struts2完整实例

/****jsp显示验证码图片****/ <img id="imgCodeId" src="system!verifyCode.do" width="83" height="33" onclick="changeImg()"/> <a href="#" style="text-decoration: underline;" id="imgC

spring mvc实现登录验证码

一.实现图形验证码的基础类 VerifyCodeUtils.java,这个类是从网上摘抄的~ package com.comp.common; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.image.BufferedImage; import jav

JAVA图片验证码

package hh.com.util; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; public class AuthImage extends

Java生成图片验证码1

VerifyCodeUtils类(main方法可直接执行): package hh.com.util; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.LinearGradientPaint; import java.awt.Paint; import java.awt.RenderingHints; import

Java常用工具类(计算MD5,验证码随机生成,天数差值计算)

写这个博文的目的是为了怕哪天自己的电脑崩溃了,以前写的那些代码就没了,所以将自己写的工具类贴出来,方便以后去使用,也避免自己反复去创造轮子, 也可以对这些方法进行简单修改来完成业务需求,这样就可以极大的提高开发的效率. 方法一:计算字符串的MD5的值 使用方法很简单,直接把值传入方法中就可以了,会返回一个字符串String注意去获取. public final static String calculateMD5(String s) { char hexDigits[] = { '0', '1'

springboot security+redis+jwt+验证码 登录验证

概述 基于jwt的token认证方案 验证码 框架的搭建,可以自己根据网上搭建,或者看我博客springboot相关的博客,这边就不做介绍了.验证码生成可以利用Java第三方组件,引入 <dependency> <groupId>com.github.penggle</groupId> <artifactId>kaptcha</artifactId> <version>2.3.2</version> </depend