docker 部署的 wordpress 接入阿里云短信服务 详细实操介绍

news2024/11/17 5:23:02

一、阿里云短信服务配置:

1、登录 阿里云短信服务 完成指引短信相关配置

阿里

2、创建RAM用户 并完成授权

出于安全及规范考虑 需通过RAM 用户来完成OponApl 接口调用,创建成功需完成短信接口(AliyunDysmsFullAccess、AliyunDysmsReadOnlyAccess)授权。

RAM 用户

RAM用户是RAM的一种实体身份类型,有确定的身份ID和身份凭证,它通常与某个确定的人或应用程序一一对应。RAM用户具备以下特点:

  • RAM用户由阿里云账号(主账号)或具有管理员权限的其他RAM用户、RAM角色创建,创建成功后,归属于该阿里云账号,它不是独立的阿里云账号。
  • RAM用户不拥有资源,不能独立计量计费,由所属的阿里云账号统一付费。
  • RAM用户必须在获得授权后,才能登录控制台或使用API访问阿里云账号下的资源。
  • RAM用户拥有独立的登录密码或访问密钥。
  • 一个阿里云账号下可以创建多个RAM用户,对应企业内的员工、系统或应用程序。
3、创建RAM用户的AccessKey

注意创建完及时转存 AccessKey Secret ,避免后面接口使用时找不到。

什么是AccessKey

访问密钥AccessKey(简称AK)是阿里云提供给用户的永久访问凭据,一组由AccessKey ID和AccessKey Secret组成的密钥对。

  • AccessKey ID:用于标识用户。

  • AccessKey Secret:是一个用于验证您拥有该AccessKey ID的密码。

AccessKey ID和AccessKey Secret根据算法由访问控制(RAM)生成,阿里云对AccessKey ID和AccessKey Secret的存储及传输均进行加密。

AccessKey不用于控制台登录,用于通过开发工具(API、CLI、SDK、Terraform等)访问阿里云时,发起的请求会携带AccessKey ID和AccessKey Secret加密请求内容生成的签名,进行身份验证及请求合法性校验。

操作步骤
  • 登录RAM控制台。

  • 在左侧导航栏,选择身份管理 > 用户。

  • 在用户页面,单击目标RAM用户名称。

在认证管理页签下的AccessKey区域,单击创建AccessKey。

image

根据界面提示完成安全验证。

在创建AccessKey对话框,查看AccessKey ID和AccessKey Secret。

4、调用测试阿里OpenAPI

可以使用 在线SDK 调用,测试短信是否可接收。

二、wordpres 接入阿里短信 SDK

1、在WordPress 的docker 容器中接入阿里云短信 SDK
  • 进入 Docker 容器
docker exec -it wordpress_container /bin/bash
  • 安装 Composer
    在容器内安装 Composer。如果你还没有 Composer,可以使用以下命令来全局安装 Composer:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php --install-dir=/usr/local/bin --filename=composer
php -r "unlink('composer-setup.php');"
  • 配置 Composer 使用阿里云镜像
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
  • 在官网下载完整 SDK 包 ,将包里的 composer.json 文件放入容器 /var/www/html 目录下,代码类似下面,使用时请去官网下载最新版。
{
  "name": "alibabacloud/sample",
  "description": "Alibaba Cloud SDK Code Sample Library for PHP",
  "type": "library",
  "license": "Apache-2.0",
  "authors": [],
  "require": {
    "php": ">5.5",
    "alibabacloud/dysmsapi-20170525": "^2.0.24",
    "alibabacloud/darabonba-openapi": "^0.2.10",
    "alibabacloud/tea-console": "^0.1.0",
    "alibabacloud/tea-utils": "^0.2.19"
  }, 
  "autoload": {
    "psr-4": {
      "AlibabaCloud\\SDK\\Sample\\": "src"
    }
  },
  "scripts": {
    "fixer": "php-cs-fixer fix ./"
  },
  "config": {
    "sort-packages": true,
    "preferred-install": "dist",
    "optimize-autoloader": true
  },
  "prefer-stable": true
}
  • 安装 阿里短信 SDK 依赖
composer install

安装完成 /var/www/html 会生成一个 vendor 文件夹 及 composer.lock 文件

2、wordpress 后台接入
  • 在wordpress 主题文件 functions.php 中编写接入代码、准备好上面阿里服务创建的 RAM AccessKey 。创建好 Sample 类后续接口使用。
/**
 * 接入阿里云短信服务
 */

// 引入短信服务相关sdk
require '/var/www/html/vendor/autoload.php';

use AlibabaCloud\SDK\Dysmsapi\V20170525\Dysmsapi;
use AlibabaCloud\Tea\Utils\Utils;
use AlibabaCloud\Tea\Console\Console;
use \Exception;
use AlibabaCloud\Tea\Exception\TeaError;

use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\SendSmsRequest;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;

class Sample
{

    /**
     * 使用AK&SK初始化账号Client
     * @return Dysmsapi Client
     */
    public static function createClient()
    {
        // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。
        // 建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/311677.html。
        $config = new Config([
            // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
            "accessKeyId" => getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), // 替换你实际保存变量的位置
            // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
            "accessKeySecret" => getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET')
        ]);
        // Endpoint 请参考 https://api.aliyun.com/product/Dysmsapi
        $config->endpoint = "dysmsapi.aliyuncs.com";
        return new Dysmsapi($config);
    }
}
  • 短发服务接口编写
    这里我们使用内置函数生成随机6位数字验证码,注意$sendSmsRequest 填入你第一步阿里短信服务配置相关参数。
    另外验证码需要设置时效性及对应的验证,这里就不过多介绍。
/**
 * 短信服务
 */
function send_sms()
{

    // 获取手机号码
    $phone = isset($_POST['phone']) ? sanitize_text_field($_POST['phone']) : '';
    
    // 创建客户端并发送短信
    $client = Sample::createClient(); // Sample 类需要在这之前被引入
    $smsCode = rand(100000, 999999); // 生成随机6位数验证码

 
    $sendSmsRequest = new SendSmsRequest([
        "phoneNumbers" => $phone,
        "signName" => "xxxx科技公司", // 短信签名
        "templateCode" => xxxxxxxxx, // 短信模板CODE
        "templateParam" => json_encode(["code" => $smsCode])

    ]);

    $runtime = new RuntimeOptions([]);

    try {
        $resp = $client->sendSmsWithOptions($sendSmsRequest, $runtime);
        $response = array(
            'status' => 'success',
            'message' => '验证码已发送,请注意查收!'
        );

        wp_send_json($response);
    } catch (Exception $error) {
        // 处理异常
        if (!($error instanceof TeaError)) {
            $error = new TeaError([], $error->getMessage(), $error->getCode(), $error);
        }
        // 返回错误信息
        echo json_encode(array('status' => 'error', 'message' => '验证码发送失败:' . $error->message));
    }
}

add_action('wp_ajax_send_sms', 'send_sms');
add_action('wp_ajax_nopriv_send_sms', 'send_sms');
  • 最后前端 php 页面发送 ajax 请求调用即可:
jQuery.ajax({
    type: 'POST',
    url: '<?php echo admin_url('admin-ajax.php'); ?>',
    data: {
        action: 'send_sms',
        phone: phone,
        type: type
    },
    success: function(response) {
        alert(response.message);
    },
    error: function(xhr, status, error) {
        alert('发生错误:' + error, 'warning');
    }
});

至此 完成 docker 部署的wordpress 阿里云短信服务接入!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1857506.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

量检具管理有一套

量检具是用于测量和检验产品尺寸、形状和质量的工具。有一位年轻的工程师小张&#xff0c;他负责管理工厂的量检具&#xff0c;确保它们能够准确地测量产品尺寸和质量。有一天&#xff0c;小张发现量检具出现了一些问题。他注意到一些量具的读数不准确&#xff0c;导致生产出来…

加载资源文件失败

背景 自己以前装了一个海康的深度学习算法平台&#xff0c;试用期是一个月&#xff0c;过了一个月之后&#xff0c;因为没有有效注册码或者加密狗的支持了导致无法使用&#xff0c;于是打算卸载掉&#xff0c;在卸载一个软件的时候&#xff0c;无论是使用控制面板还是软件自带的…

SpringIOC核心源码

一、Spring IOC容器源码解析 1、Spring IOC容器的核心类 &#xff08;1&#xff09;BeanFactory与ApplicationContext &#xff08;2&#xff09;默认容器DefaultListableBeanFactory a. DefaultListableBeanFactory实现的接口 b.DefaultListableBeanFactory继承的类&#…

TCP/IP 在 Linux 内核中的实现

之前出了一个python的socket编程的文章&#xff0c;里面讲的是怎么进行socket编程。最近想到TCP/IP协议的原理&#xff0c;然后查阅资料后说是在操作系统级别实现的&#xff0c;python的socket模块只是一个接口。 本文就来谈一下Linux源码里实现TCP/IP协议簇的源代码在哪里&am…

记一次服务器崩溃事件

今天在安装Jenkins的时候&#xff0c;进行到插件安装这一步&#xff0c;本来一切顺利&#xff0c;结果最后安装完成之后一直进不去网页&#xff0c;显示连接超时&#xff0c;网上搜索了一圈也没发现什么相似的情况&#xff0c;当我疑惑的时候回到Linux控制台&#xff0c;发现命…

三品PDM电子行业解决方案介绍 电子企业PDM应用效果

随着全球化和技术创新的不断推进&#xff0c;电子行业正经历着前所未有的发展机遇。然而&#xff0c;随之而来的挑战也日益凸显&#xff0c;尤其是在产品数据管理PDM方面。本文将探讨电子行业在PDM方面的需求&#xff0c;并提出相应的解决方案&#xff0c;以帮助企业提升效率和…

css布局中的BFC问题

什么是边距重叠&#xff1f; 什么情况下会发生边距重叠&#xff1f; 如何解决边距重叠&#xff1f; 边距重叠&#xff1a; 两个box如果都设置了边距&#xff0c;那么在垂直方向上&#xff0c;两个box的边距会发生重叠&#xff0c;以绝对值大的那个为最终结果显示在页面上。…

解锁数据潜力:数据提取技术的无限可能

在当今信息爆炸的时代&#xff0c;数据已经渗透到我们生活的方方面面&#xff0c;成为推动社会进步和经济发展的重要力量。然而&#xff0c;仅仅拥有数据并不足以带来实质性的改变&#xff0c;关键在于如何有效地提取、分析和利用这些数据&#xff0c;以解锁其深藏的潜力。数据…

计算机中丢失vcruntime140_1.dll如何修复?分享7种常用解决方法

vcruntime140_1.dll缺失原因分析 软件卸载或更新不当在软件卸载或更新过程中&#xff0c;如果未能正确处理依赖关系&#xff0c;可能会导致vcruntime140_1.dll文件被错误地删除或损坏。 据统计&#xff0c;约有30%的DLL文件丢失问题是由于不当的卸载或更新操作引起的。 用户…

气体分离膜种类逐渐增多 市场规模不断扩大

气体分离膜种类逐渐增多 市场规模不断扩大 气体分离膜是由高分子材料组成的一种选择性膜。气体分离膜对不同种类的气体分子具有不同的透过率的选择性&#xff0c;可从混合气体中选择性分离某种特殊气体&#xff0c;从而起到分离、提纯等作用。与传统气体分离方法相比&#xff0…

EfficientNet大解析:如何重新定义模型效能?

EfficientNet大解析&#xff1a;如何重新定义模型效能&#xff1f; 1、abstract2、Compound Model Scaling3、EfficientNet Architecture4、results5、conclusion 论文地址: EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks 1、abstract 提出了一…

常见加密方式:MD5、DES/AES、RSA、Base64

16/32位的数据&#xff0c;最有可能就是使用md5加密的 使用对称加密的时候&#xff0c;双方使用相同的私钥 私钥&#xff1a;单独请求/隐藏在前端的隐藏标签当中 二、RSA非对称密钥加密 公钥加密&#xff0c;私钥解密 私钥是通过公钥计算生成的 加密解密算法都在js源文件当…

数据库层持久化

数据持久化层 冷热分离 冷热分离&#xff1a;将常用的“热”数据和不常使用的“冷”数据分开存储 冷热分离就是在处理数据时将数据库分成冷库和热库&#xff0c;冷库存放那些走到终态、不常使用的数据&#xff0c;热库存放还需要修改、经常使用的数据 业务需求出现了以下情况…

计算机毕业设计Python+LSTM+Tensorflow股票分析预测 基金分析预测 股票爬虫 大数据毕业设计 深度学习 机器学习 数据可视化 人工智能

基于TensorFlow-LSTM的股票预测系统开题报告 一、研究背景与意义 随着信息技术的飞速发展&#xff0c;股票市场作为现代经济活动的重要组成部分&#xff0c;其价格波动受到广泛关注。投资者们迫切希望通过科学的方法预测股票价格&#xff0c;以优化投资决策&#xff0c;实现利…

华为数通——链路聚合

链路聚合&#xff1a;又称为端口汇聚&#xff0c;是指两台交换机之间在物理上将两个或多个端口连接起来&#xff0c;将多条链路聚合成一条逻辑链路&#xff0c;从而增大链路带宽&#xff0c;多条物理链路之间能够相互冗余。 作用&#xff1a;增加链路带宽&#xff0c;同时提供…

模型泛化性测试

文章目录 准备工作场景描述训练数据集获取与训练 测试结论测试方案外机进行平移外机进行旋转外机即平移又旋转该螺纹孔位置 准备工作 场景描述 场景搭建如下如所示&#xff1a; 在该场景中&#xff0c;将机器人安置在桌子左上角处&#xff08;以面对显示器的视野&#xff09…

【Windows】“ONLYOFFICE 桌面编辑器 8.1 新特性大揭秘:全新 PDF 编辑器、幻灯片版式和更多更新“

【Windows】“ONLYOFFICE 桌面编辑器 8.1 新特性大揭秘&#xff1a;全新 PDF 编辑器、幻灯片版式和更多更新” 大家好 我是寸铁&#x1f44a; 【Windows】“ONLYOFFICE 桌面编辑器 8.1 新特性大揭秘&#xff1a;全新 PDF 编辑器、幻灯片版式和更多更新”✨ 喜欢的小伙伴可以点点…

WordPress网创自动采集并发布插件

网创教程&#xff1a;WordPress插件网创自动采集并发布 阅读更新&#xff1a;随机添加文章的阅读数量&#xff0c;购买数量&#xff0c;喜欢数量。 使用插件注意事项 如果遇到404错误&#xff0c;请先检查并调整网站的伪静态设置&#xff0c;这是最常见的问题。需要定制化服…

通过言语和非言语检索线索描绘睡眠中的记忆再激活茗创科技茗创科技

摘要 睡眠通过重新激活新形成的记忆痕迹来巩固记忆。研究睡眠中记忆再激活的一种方法是让睡眠中的大脑再次暴露于听觉检索线索(定向记忆再激活范式)。然而&#xff0c;记忆线索的声学特性在多大程度上影响定向记忆再激活的有效性&#xff0c;目前还没有得到充分探索。本研究通…

2024年G2电站锅炉司炉证模拟考试题库及G2电站锅炉司炉理论考试试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年G2电站锅炉司炉证模拟考试题库及G2电站锅炉司炉理论考试试题是由安全生产模拟考试一点通提供&#xff0c;G2电站锅炉司炉证模拟考试题库是根据G2电站锅炉司炉最新版教材&#xff0c;G2电站锅炉司炉大纲整理而成…