PHP验证码函数代码(简单实用)

下面是“PHP验证码函数代码(简单实用)”的详细攻略,包括如何使用和代码解析。

标题

标签

php, 验证码, 函数

简介

本文将介绍一种简单实用的 PHP 验证码函数代码,旨在帮助 PHP 开发者快速生成验证码图片,并进行表单验证。

代码实现

下面是 PHP 验证码函数的完整代码实现:

<?php
session_start();
//生成验证码
function GetVerCode($num=4,$pix=0){
  $width = $num * 16;
  $height = 26;

  $img = imagecreatetruecolor($width, $height);
  //设置背景色
  $bg = imagecolorallocate($img, rand(200, 255), rand(200, 255), rand(200, 255));
  imagefill($img, 0, 0, $bg);
  //极细的纹理背景
  for($i=0;$i<$pix;$i++){
    $x = rand(0, $width);
    $y = rand(0, $height);
    $color = imagecolorallocate($img, rand(0,50), rand(0,50), rand(0,50));
    imagesetpixel($img, $x, $y, $color);
  }

  $code = '';
  for ($i = 0; $i < $num; $i++) {
    $font = imageloadfont('fonts/pnhei.ttf'); //字体文件
    $size = 16;
    $angle = rand(-15, 15); //角度
    $x = 4 + $i * 16;
    $y = rand(6, 12);
    $color = imagecolorallocate($img, rand(50, 200), rand(50, 128), rand(50, 200));
    $char = rand(0, 9);
    imagestring($img, $font, $x, $y, $char, $color);
    $code .= $char;
  }

  $_SESSION['vercode'] = $code;

  header('Content-Type: image/jpeg');
  imagejpeg($img);
  imagedestroy($img);
}

//检查验证码
function CheckVerCode($vercode){
  if(strcasecmp($_SESSION['vercode'],$vercode)==0){
    return true;
  }else{
    return false;
  }
}

//使用示例
GetVerCode();//生成并输出验证码
if(CheckVerCode($_POST['vercode'])){
  echo '验证通过!';
}else{
  echo '验证失败!';
}

代码解析

该 PHP 验证码函数主要分为两个部分:

  1. 生成验证码图片部分
  2. 检查验证码部分

生成验证码图片部分

  1. 设置验证码图片的宽度、高度和背景色。

php
$width = $num * 16;
$height = 26;
$img = imagecreatetruecolor($width, $height);
$bg = imagecolorallocate($img, rand(200, 255), rand(200, 255), rand(200, 255));
imagefill($img, 0, 0, $bg);

  1. 设置极细的纹理背景。

php
for($i=0;$i<$pix;$i++){
$x = rand(0, $width);
$y = rand(0, $height);
$color = imagecolorallocate($img, rand(0,50), rand(0,50), rand(0,50));
imagesetpixel($img, $x, $y, $color);
}

  1. 生成验证码字符串,并将验证码字符串存入 SESSION 中。

``` php
$code = '';
for ($i = 0; $i < $num; $i++) {
$font = imageloadfont('fonts/pnhei.ttf'); //字体文件
$size = 16;
$angle = rand(-15, 15); //角度
$x = 4 + $i * 16;
$y = rand(6, 12);
$color = imagecolorallocate($img, rand(50, 200), rand(50, 128), rand(50, 200));
$char = rand(0, 9);
imagestring($img, $font, $x, $y, $char, $color);
$code .= $char;
}

$_SESSION['vercode'] = $code;
```

  1. 输出验证码图片。

php
header('Content-Type: image/jpeg');
imagejpeg($img);
imagedestroy($img);

检查验证码部分

通过比较用户输入的验证码和 SESSION 中存储的验证码,判断验证码是否正确。

function CheckVerCode($vercode){
  if(strcasecmp($_SESSION['vercode'],$vercode)==0){
    return true;
  }else{
    return false;
  }
}

示例说明1

以下是一个示例,调用 GetVerCode 函数生成一个4位验证码图片。

<?php
session_start();
if(isset($_GET['v']) && $_GET['v']=='code'){
  include 'GetVerCode.php';
  GetVerCode();//生成验证码图片
}
?>
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>验证码示例1</title>
</head>
<body>
  <img src="GetVerCode.php?v=code" alt="验证码">
</body>
</html>

示例说明2

以下是一个示例,调用 CheckVerCode 函数检查它前面示例中生成的验证码是否正确。

<?php
session_start();
if(CheckVerCode($_POST['vercode'])){
  echo '验证通过!';
}else{
  echo '验证失败!';
}
?>
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>验证码示例2</title>
</head>
<body>
  <form action="" method="post">
    <label>验证码:</label>
    <input type="text" name="vercode" maxlength="4">
    <input type="submit" value="提交">
  </form>
</body>
</html>

结论

通过阅读本文,读者可以了解到如何使用该 PHP 验证码函数代码,并了解了其生成验证码图片和检查验证码的流程。同时,该代码具有普通、简单、易懂、易于维护等优点,适用于 PHP 开发者生成验证码图片。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP验证码函数代码(简单实用) - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • PHP自定义函数实现格式化秒的方法

    实现格式化秒的方法可以使用PHP自定义函数完成。下面是一个完整的攻略: 1. 函数定义 首先,我们需要定义一个PHP函数来实现格式化秒的操作。函数的基本结构如下: function formatSeconds($seconds) { // 在这里实现格式化秒的操作,最终返回格式化后的结果 } 在这里,$seconds是需要进行格式化的秒数,可以是任何整数。函…

    PHP 2023年5月26日
    00
  • php递归使用示例(php递归函数)

    下面我将详细讲解“PHP递归使用示例(PHP递归函数)”的完整攻略,包含以下内容: 什么是递归函数(Recursive Function) 递归函数的基本用法 递归函数的注意事项 示例:计算斐波那契数列 示例:遍历多层级分类树 1. 什么是递归函数(Recursive Function) 递归函数是指在函数的执行过程中调用了函数本身,从而达到多次执行的目的。…

    PHP 2023年5月27日
    00
  • PHP中用接口、抽象类、普通基类实现“面向接口编程”与“耦合方法”简述

    面向接口编程和耦合方法是设计模式中非常重要的概念,下面我将详细讲解PHP中如何用接口、抽象类、普通基类实现这两个概念。 面向接口编程 什么是面向接口编程 面向接口编程(Interface Oriented Programming)是一种编程模式,其核心思想是面向接口编程而非面向实现编程,也就是说,我们不关注函数或类的内部如何实现,只需要专注于定义最小接口,只…

    PHP 2023年5月27日
    00
  • PHP编程与应用

    PHP编程与应用完整攻略 简介 PHP是一种常用的脚本语言,被广泛用于Web开发。本文将介绍PHP编程的基础知识和应用,包括语法、变量、表达式、流程控制、函数、数组、文件操作、正则表达式等方面。 语法 PHP代码可以嵌入到HTML代码中,使用<?php和?>标记。例如: <!DOCTYPE html> <html> &lt…

    PHP 2023年5月30日
    00
  • PHP 第二节 数据类型之字符串类型

    PHP 第二节 数据类型之字符串类型 字符串类型的概述 字符串是由零个或多个字符组成的有序序列。字符串可以是单引号(”, single quote)或双引号(“”, double quotes)包含的任何文本,其中包括空格和标点符号。PHP在解析最后一个令牌后返回输出之前将分析空格,并删除字符串中除双引号和转义符外无关紧要的空格和换行符。字符串在PHP中是…

    PHP 2023年5月26日
    00
  • PHP和JS之间的数据交互并处理

    PHP和JS之间的数据交互可以通过以下步骤完成: 在PHP文件中获取需要交互的数据,可以使用POST或GET方法获取数据,然后将其存储为PHP变量或对象。 将需要与JS交互的数据转换为JSON格式,可以使用PHP内置函数json_encode()。例如: $data = array(‘name’ => ‘John’, ‘age’ => 30); …

    PHP 2023年5月26日
    00
  • php数组函数序列之array_unique() – 去除数组中重复的元素值

    下面是详细讲解”php数组函数序列之array_unique() – 去除数组中重复的元素值”的攻略。 什么是array_unique()函数 array_unique()函数是PHP中处理数组的一个常用函数,它的作用是去除数组中重复的元素值,只保留一个,返回一个新的数组。 array_unique()函数的语法 array array_unique ( a…

    PHP 2023年5月26日
    00
  • php cli模式学习(PHP命令行模式)

    以下是关于“PHP CLI模式学习(PHP命令行模式)”的完整攻略。 什么是PHP CLI模式? CLI(Command Line Interface)模式是指在命令行(Windows下的cmd.exe或Linux、macOS下的终端)中运行PHP脚本,而非通过Web服务器(如Apache)来解析脚本。这意味着我们可以在不依赖Web服务器的情况下运行和测试P…

    PHP 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部