Home Backend Development PHP Tutorial How to implement verification code applet in php

How to implement verification code applet in php

May 29, 2018 pm 03:35 PM
php Verification code

This article mainly introduces the specific implementation method of the verification code applet based on PHP, and makes detailed comments, which is conducive to understanding and learning. Friends who need it can take a look together

Verification code function ( Personal understanding):

  • Reduce the pressure on the server (such as the verification code function of 12306);

  • Prevent violent registration

Personal idea: Generate n-digit random numbers from a-z, A-Z, 1-9 to form a new verification code.

Several small functions for generating verification codes

range() //Specify a range to output an array
a) For example: range(1,9)
array_merge()//Merge arrays
a) array_merge(array 1, array 2….)
array_rand (array, quantity)
a) Randomly take out several subscripts from the array and return an array

  • shuffle(array)//Will shuffle the array again Element

  • mt_rand (specify a range) //Generate a better random number

  • such as: mt_rand(1,5) // Generate an arbitrary number between 1-5

Generate verification code


1

2

3

4

5

6

7

8

9

10

11

12

13

<?php

 $arr1=range(&#39;a&#39;, &#39;z&#39;);//指定范围输出一个数组

 $arr2=range(&#39;A&#39;, &#39;Z&#39;);

 $arr3=range(1,9);

 $arr=array_merge($arr1,$arr2,$arr3); //合并数组

 $index = array_rand($arr,5); //在$arr中随机取5个数,返回值是$arr的下标

 Shuffle($index);

 $code = &#39;&#39;;//定义一个空的字符串来存储生成的验证码用&#39;点&#39;来进行拼接

 foreach ($index as $key => $value) {//遍历数组

 $code.= $arr[$value];//根据下标取数组中的值

 }

 var_dump($code);

?>

Copy after login


Screenshots of running results

Perfection: Add the verification code to the image so that the verification code is realistic

Before improving, let’s introduce the image creation The rough steps

Create an image

Method 1: Create a true color image (empty canvas)

imagecreatetruecolor(width, height) //Create a true color image

Description:

  • width: width of the canvas (pixels)

  • height: the height of the canvas (pixels)

  • The return value is the image resource

##Note:

is a true color image: fill color

imagefill(image, x, y, color) //Fill the image resource with color

Description:

  • image //Image resource

  • x, y, filled coordinate point (note: filled with the color closest to this point)

  • color; //What color to use To fill

for a true color image: Assign color

##imagecolorallocate(image, red, green, blue)

Description:

    image //Image resource
  • red: //Red color(0 -255) or 0x(00-ff) //That is, expressed in hexadecimal (0xff is 255)
  • green//Green color (0-255)
  • blue //Blue color (0-255)
  • Code demonstration of imagefill and imagecolorallocate

When the canvas is not filled with color Effect

The effect and code when filling the canvas with color

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

<?php

//创建图像资源(空白画布)默认显示为黑色

$image = imagecreatetruecolor(300, 400);

//1.image //图像资源

//2.red: //红颜色(0-255) 或 0x(00-ff) //即十六进制来表示 (0xff就是255)

//3.green//绿颜色(0-255)

//4.blue //蓝颜色(0-255)

$color = imagecolorallocate($image, 255, 0, 0);

//1.image //图像资源

//2.x,y,填充的坐标点(注意:填充的与此点最接近的颜色)

//3.color; //用什么颜色来填充

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

//输出图像

header(&#39;content-type:image/jpeg&#39;);

imagejpeg($image);

//销毁图像资源

imagedestroy($image);

?>

Copy after login

## Result screenshot;

#Output image (take jpeg as an example)

Output image to browser

a ) header('content-type:image/jpeg'); //Set to view the image through browsing

b) imagejpeg (image resource)

Output the image by file

a) imagejpeg(image resource,'image path',image quality) //Quality value 0-100

b) Note:

Note: Only jpeg format has the quality parameter.

Destroy the image

imagedestroy($image); / /Destroy images and release memory resources.

Note: Destroy a few of the currently generated image resources.

Verify The entire code of the code:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

<?php

//实例:让文本居于图像的正中

//创建图像资源(空白的画布)

$image = imagecreatetruecolor(100, 50);

$color = imagecolorallocate($image, mt_rand(20,200), mt_rand(20,200), mt_rand(20,200));

//为图像资源填充颜色

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

//绘制图像

$font = 5;

//验证码的开始

$arr1 = range(&#39;a&#39;,&#39;z&#39;);

$arr3 = range(&#39;A&#39;,&#39;Z&#39;);

$arr2 = range(1,9);

//array_merge — 合并一个或多个数组

$arr = array_merge($arr1,$arr2,$arr3);

$index = array_rand($arr,5); //随机从原数组中找出5个下标

$string = &#39;&#39;;

foreach ($index as $value) { //$value 两个功能,即是$index中的值,又是$arr中的下标

 $string .= $arr[$value]; //将得到字符进行连接

}

//验证码的结束

//mt_rand — 生成更好的随机数

//echo mt_rand(1,5);die;

//加入点干扰

$pointcolor = imagecolorallocate($image, mt_rand(20,200), mt_rand(20,200), mt_rand(20,200));

//循环创建1000个干扰点

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

 imagesetpixel($image, mt_rand(0,imagesx($image)), mt_rand(0,imagesy($image)), $pointcolor);

}

//加入线的干扰

$lintecolor = imagecolorallocate($image, mt_rand(20,200), mt_rand(20,200), mt_rand(20,200));

// 循环创建50个线干扰

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

 imageline($image, mt_rand(0,imagesx($image)), mt_rand(0,imagesy($image)), mt_rand(0,imagesx($image)), mt_rand(0,imagesy($image)) ,$lintecolor);

}

//一个字符的宽度 imagefontwidth($font)

//字符串的个数: strlen(字符串)   

//一个字符的宽度*字符串的个数

//所有字符串宽度和= 一个字符的宽度*字符串的个数

//$x = (画布的宽度-所有字符串宽度和)/2

$x = (imagesx($image)-imagefontwidth($font)*strlen($string))/2;

//$y = (画布的高度-字符的高度)/2;

//字符的高度: imagefontheight($font)

$y = (imagesy($image)-imagefontheight($font))/2;

$stringcolor = imagecolorallocate($image, mt_rand(20,200), mt_rand(20,200), mt_rand(20,200));

imagestring($image, $font, $x, $y, $string, $stringcolor);

//输出图像

header(&#39;content-type:image/jpeg&#39;); //设置将图像通过浏览来查看

imagejpeg($image,&#39;&#39;,100); //将图像资源输出

//销毁图像资源

imagedestroy($image); //销毁图像

Copy after login



Understand some functions in the code

Add interference points

imagesetpixel(image, x, y, color)

Description: x, y is a point Coordinates

Added interference line

imageline(image, x1, y1, x2, y2, color)

说明: x1,y1是线的一个端点坐标; x2,y2是线的另一个端口的坐标; 由两点画一条线

让验证码居于图像的正中


1

2

3

4

5

<strong>imagefontheight(font)获取字体的高度:

imagefontwidth(font)获取字体的宽度:

strlen(字符串)//获取字符串的长度

imagesx(image) //获取画布的宽度

imagesy(image) //获取画布的高度</strong>

Copy after login


最后运行结果

再次完善(和html代码结合起来)

Html代码


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

<strong><!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>Document</title>

</head>

<body>

<form name=&#39;frm&#39; method=&#39;post&#39; action=&#39;&#39;>

 <table width="30%" border="2" align="center" rules="all" cellpadding="10">

 <tr>

  <th colspan="2">请输入信息</th>

 </tr>

 <tr>

  <th>姓名:</th>

  <th><input type="text" name="username"></input></th>

 </tr>

 <tr>

  <th>密码:</th>

  <th><input type="password" name="userpwd"></input></th>

 </tr>

 <tr> 555556

  <th>验证码</th>

  <th><input type = &#39;text&#39; name = &#39;checkcode&#39;></input><img src="21.php" style="cursor:pointer" onclick="this.src=&#39;21.php&#39;?+Math.random()"></th>

 </tr>

 <tr>

  <th colspan="2"><input type="submit" name="submit" value="提交"></input></th>

 </tr>

</table>

</form>

</body>

</html></strong>

Copy after login


理解;

最后结果截图


以上就是本文的全部内容,希望对大家的学习有所帮助。


相关推荐:

php 验证码程序

php 验证码程序_PHP教程

PHP验证码图片生成程序


The above is the detailed content of How to implement verification code applet in php. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
2 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

CakePHP Project Configuration CakePHP Project Configuration Sep 10, 2024 pm 05:25 PM

In this chapter, we will understand the Environment Variables, General Configuration, Database Configuration and Email Configuration in CakePHP.

PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

CakePHP Date and Time CakePHP Date and Time Sep 10, 2024 pm 05:27 PM

To work with date and time in cakephp4, we are going to make use of the available FrozenTime class.

CakePHP File upload CakePHP File upload Sep 10, 2024 pm 05:27 PM

To work on file upload we are going to use the form helper. Here, is an example for file upload.

CakePHP Routing CakePHP Routing Sep 10, 2024 pm 05:25 PM

In this chapter, we are going to learn the following topics related to routing ?

CakePHP Working with Database CakePHP Working with Database Sep 10, 2024 pm 05:25 PM

Working with database in CakePHP is very easy. We will understand the CRUD (Create, Read, Update, Delete) operations in this chapter.

Discuss CakePHP Discuss CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP is an open-source framework for PHP. It is intended to make developing, deploying and maintaining applications much easier. CakePHP is based on a MVC-like architecture that is both powerful and easy to grasp. Models, Views, and Controllers gu

CakePHP Creating Validators CakePHP Creating Validators Sep 10, 2024 pm 05:26 PM

Validator can be created by adding the following two lines in the controller.

See all articles