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实现清除MySQL死连接的方法

    下面我来详细讲解“PHP实现清除MySQL死连接的方法”的完整攻略。 什么是MySQL死连接 MySQL死连接指的是一个持续的连接,但该连接上的查询已经完成,却没有被显式地关闭,这可能导致MySQL服务器的负载增加,同时影响MySQL性能。 PHP实现清除MySQL死连接的方法 方式1:使用mysql_ping函数 通过使用mysql_ping()函数,可以…

    PHP 2023年5月30日
    00
  • 微信小程序 SOTER 生物认证DEMO 指纹识别功能

    微信小程序 SOTER 生物认证DEMO 指纹识别功能攻略 简介 微信小程序SOTER(Secure Object Token Express Release)是一个基于微信安全架构的生物认证框架,提供了生物认证所需要的所有流程,并满足了不同场景的需求。其中,SOTER生物认证DEMO有很多的示例代码,本文主要讲述其中的指纹识别功能。 指纹识别功能开发流程 …

    PHP 2023年5月23日
    00
  • 无JS,完全php面向过程数据分页实现代码

    下面是无JS、完全php面向过程数据分页实现代码的攻略: 1. 概述 本文介绍如何使用完全php面向过程实现无JS的数据分页功能。在网页开发中,数据分页是一个非常基础且常用的功能,用于分页展示大量数据,提高用户的体验感。通常情况下,我们可以使用JavaScript等前端语言来实现数据分页功能。但是,如果我们想要实现纯后端的数据分页,则需要使用php等服务器端…

    PHP 2023年5月27日
    00
  • PHP实现简易计算器功能

    下面我会给你详细讲解如何使用PHP实现简易计算器功能。 1. 创建一个HTML表单 首先,我们需要在HTML中创建一个表单,以便用户输入要计算的数字和操作符。这里我们需要输入两个数字和一个操作符。 <form method="POST" action="calculator.php"> <label …

    PHP 2023年5月23日
    00
  • 跨浏览器PHP下载文件名中的中文乱码问题解决方法

    跨浏览器PHP下载文件名中的中文乱码问题一直是一个头疼的问题,本文将介绍一种常见的解决方法。 问题描述 当我们用PHP代码下载文件时,如果文件名包含中文字符,就有可能在不同的浏览器中出现乱码。例如,在火狐浏览器中,文件名可能显示为乱码;而在谷歌浏览器中,文件名可能显示为可读的中文字符。 解决方案 解决这个问题的方法是在HTTP响应头中设置Content-Di…

    PHP 2023年5月26日
    00
  • 华硕天选2游戏本怎么样 华硕天选2游戏本详细评测

    “华硕天选2游戏本怎么样”——详细评测 一、外观设计 1. 外形 华硕天选2游戏本采用黑色金属外壳,外形简洁大方,给人以高贵、精致的感觉。尤其是屏幕背面采用了斜角设计,使整台笔记本看起来更加动感。 2. 尺寸 华硕天选2游戏本的尺寸为360 × 262 × 19.9 mm,重量约为1.9 kg。整体大小合适,便携性良好,可随时携带。 3. 接口 华硕天选2游…

    PHP 2023年5月27日
    00
  • php实现搜索一维数组元素并删除二维数组对应元素的方法

    实现搜索一维数组元素并删除二维数组对应元素的方法,可以分为以下几个步骤: 定义一个一维数组,存储需要搜索的元素; 定义一个二维数组,存储需要删除对应元素的数组; 使用foreach循环遍历二维数组,对每个子数组使用array_search函数搜索一维数组中是否存在对应元素; 如果存在对应元素,则使用unset函数删除该子数组; 循环结束后,获得删除后的二维数…

    PHP 2023年5月26日
    00
  • php截取html字符串及自动补全html标签的方法

    PHP截取HTML字符串方法 在PHP中,我们可以使用DOMDocument类来解析HTML文档,并且可以使用XPath查询语言来定位HTML元素。 下面是一个示例,演示如何使用DOMDocument类来截取HTML字符串: // 要截取的HTML字符串 $html = ‘<div class="content"> <h…

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