php 验证码实例代码

当开发一些需要用户输入敏感信息的网站时,很有必要在用户提交表单前进行验证码验证,以防止恶意用户通过程序提交大量无效数据。在 PHP 中,我们可以使用一些库或者自己编写代码来生成并验证验证码。

下面我会讲解一些生成验证码的常用方法,以及提供一些生成验证码的示例代码。

生成图形验证码

步骤1:定义一个字符集

我们要生成随机的字符验证码,需要定义一个字符集,可以是数字和大小写字母等。

$charSet = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';

步骤2:随机生成验证码

我们可以通过调用 mt_rand() 函数随机生成字符验证码,这里的示例代码会生成一个6位的验证码。

$length = 6;
$randStr = '';
for ($i = 0; $i < $length; $i++) {
    $randStr .= $charSet[mt_rand(0, strlen($charSet) - 1)];
}

步骤3:将验证码存储在 session 中,并生成验证码图片

我们需要将生成的验证码存储在 session 中,并生成验证码图片,以便用户在网页上输入验证码。这里我们可以借助 imagecreate()imagecolorallocate()imagettftext() 等函数生成一个带有验证码的验证码图片。

// 开启 session
session_start();
// 存储验证码
$_SESSION['captcha_code'] = $randStr;

// 创建画布
$width = 100;
$height = 50;
$image = imagecreate($width, $height);
// 随机生成背景颜色
$bgcolor = imagecolorallocate($image, mt_rand(200, 255), mt_rand(200, 255), mt_rand(200, 255));
// 随机生成验证码颜色
$color = imagecolorallocate($image, mt_rand(0, 200), mt_rand(0, 200), mt_rand(0, 200));
// 生成验证码图案
$fontPath = 'arial.ttf';
for ($i = 0; $i < $length; $i++) {
    $fontSize = mt_rand(20, 25);
    $angle = mt_rand(-30, 30);
    imagettftext($image, $fontSize, $angle, ($i + 1) * ($width / $length), $height / 2 + $fontSize / 2, $color, $fontPath, $randStr[$i]);
}
// 输出图像
header('Content-type:image/png');
imagepng($image);

示例1:单页面验证码

在一个 HTML 页面中添加一个验证码表单:

<form method="post" action="submit.php">
    <input type="text" name="captcha_code" placeholder="请输入验证码">
    <img src="captcha.php" alt="验证码">
    <input type="submit" value="提交">
</form>

当用户提交表单时,我们需要验证用户输入的验证码是否正确。这里我们可以通过比较用户输入的验证码和存储在 session 中的验证码来进行验证。

session_start();
// 获取用户输入的验证码
$captcha = $_POST['captcha_code'];
// 获取存储在 session 中的验证码
$captchaCode = $_SESSION['captcha_code'];
// 判断用户输入的验证码是否正确
if ($captcha === $captchaCode) {
    // 验证码输入正确,处理表单
} else {
    // 验证码输入错误,给出提示
}

示例2:注册页面验证码

在一个注册页面中,我们需要对用户输入的用户名、密码和验证码进行验证,如果验证通过,才能提交表单进行注册。

<form method="post" action="register.php">
    <label>用户名:<input type="text" name="username"></label><br>
    <label>密码:<input type="password" name="password"></label><br>
    <label>验证码:<input type="text" name="captcha_code"></label>
    <img src="captcha.php" alt="验证码">
    <input type="submit" value="注册">
</form>

当用户提交表单时,我们需要对用户输入的验证码进行验证。如果验证通过,我们可以将用户名和密码存储到数据库中,完成用户注册。

session_start();
// 获取用户输入的用户名、密码和验证码
$username = $_POST['username'];
$password = $_POST['password'];
$captcha = $_POST['captcha_code'];
// 获取存储在 session 中的验证码
$captchaCode = $_SESSION['captcha_code'];
// 判断用户输入的验证码是否正确
if ($captcha === $captchaCode) {
    // 验证码输入正确,将用户名和密码存储到数据库中
} else {
    // 验证码输入错误,给出提示
}

生成短信验证码

除了图形验证码,我们还可以生成短信验证码,通过短信将验证码发送给用户。

步骤1:生成随机数字

与生成图形验证码的方法类似,我们可以随机生成一个指定长度的数字。

$length = 6;
$randStr = '';
for ($i = 0; $i < $length; $i++) {
    $randStr .= mt_rand(0, 9);
}

步骤2:将验证码存储在 session 中,并发送短信

我们需要将生成的验证码存储在 session 中,并通过一些短信发送平台发送短信给用户。这里我们可以利用第三方短信发送服务,比如阿里大鱼、云片等。

session_start();
// 存储验证码
$_SESSION['sms_captcha_code'] = $randStr;

// 发送短信
$apiKey = 'YOUR_API_KEY';
$apiSecret = 'YOUR_API_SECRET';
$phone = '13800138000';
$templateCode = 'SMS_1234567890'; // 你的短信模板 ID
$sms = new SmsClient($apiKey, $apiSecret);
$result = $sms->send($phone, $templateCode, ['code' => $randStr]);
if ($result->code === 0) {
    // 短信发送成功
} else {
    // 短信发送失败
}

示例1:找回密码页面

在一个找回密码页面中,我们需要让用户输入手机号和验证码,如果验证码输入正确,才能进行下一步密码重置操作。

<form method="post" action="reset_password.php">
    <label>手机号:<input type="text" name="phone"></label><br>
    <label>验证码:<input type="text" name="sms_captcha_code"></label>
    <input type="submit" value="下一步">
</form>

当用户提交表单时,我们需要对用户输入的验证码进行验证。如果验证通过,我们可以进入下一步密码重置操作。

session_start();
// 获取用户输入的手机号和验证码
$phone = $_POST['phone'];
$smsCaptcha = $_POST['sms_captcha_code'];
// 获取存储在 session 中的验证码
$smsCaptchaCode = $_SESSION['sms_captcha_code'];
// 判断用户输入的验证码是否正确
if ($smsCaptcha === $smsCaptchaCode) {
    // 验证码输入正确,进入下一步操作
} else {
    // 验证码输入错误,给出提示
}

示例2:注册页面

在一个注册页面中,我们需要让用户输入手机号和验证码进行注册。

<form method="post" action="register.php">
    <label>手机号:<input type="text" name="phone"></label><br>
    <label>验证码:<input type="text" name="sms_captcha_code"></label>
    <input type="submit" value="注册">
</form>

当用户提交表单时,我们需要对用户输入的验证码进行验证。如果验证通过,我们可以将手机号和密码存储到数据库中,完成用户注册。

session_start();
// 获取用户输入的手机号和验证码
$phone = $_POST['phone'];
$smsCaptcha = $_POST['sms_captcha_code'];
// 获取存储在 session 中的验证码
$smsCaptchaCode = $_SESSION['sms_captcha_code'];
// 判断用户输入的验证码是否正确
if ($smsCaptcha === $smsCaptchaCode) {
    // 验证码输入正确,将手机号和密码存储到数据库中
} else {
    // 验证码输入错误,给出提示
}

以上就是生成验证码的一些常用方法和示例代码,可以满足大多数网站的需求。需要注意的是,验证码的安全性并不是绝对的,一些高级黑客仍然可以通过一些方式绕过验证码进行恶意操作。但是对于大部分普通用户来说,验证码可以有效地防止恶意攻击。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:php 验证码实例代码 - Python技术站

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

相关文章

  • php读取本地json文件的实例

    下面是php读取本地json文件的完整攻略: 1. 创建本地json文件 首先需要在本地创建一个json文件(例如:test.json),并在该文件中添加一些数据,方便我们后续进行读取操作。 2. php读取json文件的主要方法 方法一:使用file_get_contents()函数 使用file_get_contents()函数可以读取本地json文件的…

    PHP 2023年5月26日
    00
  • WordPress中对访客评论功能的一些优化方法

    当网站创作得越来越好,就会有越来越多的访客在博客文章下面留言。这是一个非常好的事情,因为它意味着你的读者会与你进行更多互动,并且你的文章也会获得更多的曝光率。然而,随之而来的是访客评论功能的滥用和垃圾评论的洪水。为解决这个问题,我们通过以下几种方法对WordPress中的访客评论功能进行优化。 1. 安装反垃圾评论插件 反垃圾评论插件可以识别并过滤掉垃圾评论…

    PHP 2023年5月23日
    00
  • php 利用array_slice函数获取随机数组或前几条数据

    获取随机数组或前几条数据,可以使用PHP中的array_slice函数。该函数用于将数组的一部分拆分出来,并返回新的数组。 array_slice函数的基本语法如下: array array_slice(array $array, int $offset, ?int $length = null, bool $preserve_keys = false) 其…

    PHP 2023年5月26日
    00
  • C#调用Rar文件及获取Rar返回值的方法

    下面是详细讲解C#调用Rar文件及获取Rar返回值的方法的完整攻略。 了解Rar文件格式 Rar文件格式是一种常见的压缩文件格式,可以使用Rar软件完成解压和压缩操作。在使用C#程序调用Rar文件之前,我们需要了解一下Rar文件格式。 Rar文件格式分为两种,分别是早期的RAR1和近年来普遍使用的RAR5。RAR1格式的文件扩展名为“.rar”,RAR5格式…

    PHP 2023年5月27日
    00
  • 区块链桥接是什么意思?什么是区块链桥?

    区块链技术的发展越来越成熟,但是仍存在着各种不同的公链之间的信息孤岛问题,即不同的公链之间无法有效地通信和信息互通。区块链桥接便是为了解决这个问题而产生的技术方案。 什么是区块链桥接? 区块链桥接(Blockchain Bridge)是一种技术,用于连接不同公链之间的数据和价值转移。它实现了不同公链之间的无缝链接,让它们之间的数据和价值可以互通有无。 所谓区…

    PHP 2023年5月27日
    00
  • php发送get、post请求的6种方法简明总结

    PHP发送GET、POST请求的6种方法简明总结 在PHP中发送HTTP请求是比较常见的需求,本文将总结6种常用的方式,包括使用cURL和不使用cURL的方法。 1. 使用file_get_contents函数发送GET请求 file_get_contents函数可以读取文件内容,也可以用于发送GET请求。下面是一个例子: $url = ‘https://w…

    PHP 2023年5月27日
    00
  • php实现简单的权限管理的示例代码

    下面我将详细讲解如何通过 PHP 实现简单的权限管理。 什么是权限管理? 权限管理是指在系统或网站中,对不同用户或用户组的访问和操作进行限制或授权的管理。 为什么需要权限管理? 在系统或网站中,存在着一些对不同用户或用户组可见但不同权限的内容,对于不同的用户或用户组,应该有不同的权限来限制或授权对这些内容的访问和操作,避免数据泄露和操作失误等问题。 如何实现…

    PHP 2023年5月24日
    00
  • PHP 处理图片的类实现代码

    那么我们来详细讲解一下 PHP 如何处理图片的类实现代码。 首先,在 PHP 中处理图片需要用到 GD 库,所以要确认 GD 库是否已经安装并启用。 接下来,创建一个 PHP 文件,并引入 GD 库的相关文件: <?php // 引入 GD 库 extension_loaded(‘gd’) or die(‘GD 模块没有安装’); // 引入相关文件 …

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