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

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

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 阿里云短信服务接入!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【大模型】大模型微调方法总结(二)

1.Adapter Tuning 1.背景 2019年谷歌的研究人员首次在论文《Parameter-Efficient Transfer Learning for NLP》提出针对 BERT 的 PEFT微调方式&#xff0c;拉开了 PEFT 研究的序幕。他们指出&#xff0c;在面对特定的下游任务时&#xff0c;如果进行 Full-Fintuning&#xff0…

执行yum命令报错Could not resolve host: mirrors.cloud.aliyuncs.com; Unknown error

执行yum命令报错 [Errno 14] curl#6 - "Could not resolve host: mirrors.cloud.aliyuncs.com; Unknown error 修改图中所示两个文件&#xff1a; vim epel.repo vim CentOS-Base.repo 将所有的http://mirrors.cloud.aliyuncs.com 修改为http://mirrors.aliyun.com。 修改…

数据库逻辑结构设计-实体和实体间联系的转换、关系模式的优化

一、引言 如何将数据库概念结构设计的结果&#xff0c;即用E-R模型表示的概念模型转化为关系数据库模式。 E-R模型由实体、属性以及实体间的联系三个要素组成 将E-R模型转换为关系数据库模式&#xff0c;实际上就是要将实体及实体联系转换为相应的关系模式&#xff0c;转换…

【深度学习】基于深度离散潜在变量模型的变分推理

1.引言 1.1.讨论的目标 阅读并理解本文后&#xff0c;大家应能够&#xff1a; 掌握如何为具有离散潜在变量的模型设定参数在可行的情况下&#xff0c;使用精确的对数似然函数来估计参数利用神经变分推断方法来估计参数 1.2.导入相关软件包 # 导入PyTorch库&#xff0c;用于…

LLM vs SLM 大模型和小模型的对比

语言模型是能够生成自然人类语言的人工智能计算模型。这绝非易事。 这些模型被训练为概率机器学习模型——预测适合在短语序列中生成的单词的概率分布&#xff0c;试图模仿人类智能。语言模型在科学领域的重点有两个方面&#xff1a; 领悟情报的本质。 并将其本质体现为与真实…

Java学习十一—Java8特性之Stream流

一、Java8新特性简介 2014年3月18日&#xff0c;JDK8发布&#xff0c;提供了Lambda表达式支持、内置Nashorn JavaScript引擎支持、新的时间日期API、彻底移除HotSpot永久代。 ​ Java 8引入了许多令人兴奋的新特性&#xff0c;其中最引人注目的是Lambda表达式和Stream API。以…

十年磨一剑,华火电燃组合灶重磅问世,引领厨房新时代

十年磨一剑&#xff0c;华火研发团队经过不懈努力&#xff0c;成功将等离子电生明火技术与电陶炉红外线光波炉技术精妙融合&#xff0c;打造出的这款具有划时代是意义的电燃组合灶HH-SZQP60&#xff0c;终于在 2024 年6月震撼登场&#xff0c;该灶以其卓越的创新技术和独特的产…

day01-项目介绍及初始化-登录页

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 day01-项目介绍及初始化-登录页一、人力资源项目介绍1.1项目架构和解决方案主要模块解决的问题 二、拉取项目基础代码1.引入库2.升级core-js版本到3.25.5按照完整依…

一篇文章带你玩懂数据库的基础函数

数据库的函数 单行函数1.数据函数2.字符串函数3.时间函数4.流程函数 多行函数聚合函数 阅读指南&#xff1a; 本文章讲述了对于数据库的单行和多行函数&#xff0c;如果读者感兴趣&#xff0c;后续我们会更新高级的操作在我们的对于数据库教程的合集中&#xff0c;大家可以来很…

振弦采集仪在大型工程安全监测中的应用探索

振弦采集仪在大型工程安全监测中的应用探索 振弦采集仪是一种用于监测结构振动和变形的设备&#xff0c;它通过采集振弦信号来分析结构的动态特性。在大型工程安全监测中&#xff0c;振弦采集仪具有重要的应用价值&#xff0c;可以帮助工程师和监测人员实时了解结构的状况&…

红队内网攻防渗透:内网渗透之内网对抗:横向移动篇Kerberos委派安全非约束系约束系RBCD资源系Spooler利用

红队内网攻防渗透 1. 内网横向移动1.1 委派安全知识点1.1.1 域委派分类1.1.2 非约束委派1.1.2.1 利用场景1.1.2.2 复现配置:1.1.2.3 利用思路1:诱使域管理员访问机器1.1.2.3.1 利用过程:主动通讯1.1.2.3.2 利用过程:钓鱼1.1.2.4 利用思路2:强制结合打印机漏洞1.1.2.5 利用…

利用Linked SQL Server提权

点击星标&#xff0c;即时接收最新推文 本文选自《内网安全攻防&#xff1a;红队之路》 扫描二维码五折购书 利用Linked SQL Server提权 Linked SQL server是一个SQL Server数据库中的对象&#xff0c;它可以连接到另一个SQL Server或非SQL Server数据源&#xff08;如Oracle&a…

Techviz:XR协作工作流程,重塑远程电话会议新形式

在当今快速发展的数字环境中&#xff0c;无缝远程协作的需求正在成为企业多部门协同工作的重中之重&#xff0c;尤其是对于制造业、建筑和设计等行业的专业人士而言&#xff0c;这一需求更加迫切。传统的远程电话会议协作形式存在着延滞性&#xff0c;已经渐渐跟不上当今快节奏…

脑洞爆裂,OLED透明屏与红酒柜相结合

当OLED透明屏与红酒柜相结合时&#xff0c;我们可以设想一个极具创新性和实用性的产品&#xff0c;将科技美学与品酒文化完美融合。以下是我为这种结合提出的一些创新设想&#xff1a; 透明展示与虚拟标签 透明展示&#xff1a;OLED透明屏能够直接安装在红酒柜的玻璃门或侧面&a…

面试突击指南:Java基础面试题3

1.介绍下进程和线程的关系 进程:一个独立的正在执行的程序。 线程:一个进程的最基本的执行单位,执行路径。 多进程:在操作系统中,同时运行多个程序。 多进程的好处:可以充分利用CPU,提高CPU的使用率。 多线程:在同一个进程(应用程序)中同时执行多个线程。 多线程…

Redis 7.x 系列【9】数据类型之自动排重集合(Set)

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Redis 版本 7.2.5 源码地址&#xff1a;https://gitee.com/pearl-organization/study-redis-demo 文章目录 1. 前言2. 常用命令2.1 SADD2.2 SCARD2.3 SISMEMBER2.4 SREM2.5 SSCAN2.6 SDIFF2.7 SU…

Jmeter,badboy学习

1、注意Jmeter与jdk之间的版本对应 2、Jmeter的作用&#xff1a; jmeter可以做接口测试和压力测试。其中接口测试的简单操作包括做http脚本&#xff08;发get/post请求、加cookie、加header、加权限认证、上传文件&#xff09;、做webservice脚本、参数化、断言、关联&#x…

Polyplus转染试剂的优点,你知道吗?

Polyplus专注于为生命科学研究、体内转染、生物制品制造以及细胞和基因治疗的客户&#xff0c;提供创新的核酸递送解决方案。其深耕转染领域&#xff0c;产品力强劲。在科研领域&#xff0c;其产品转染效果以及价格都优于lipo系列。无论是在基础科学研究中&#xff0c;还是在临…

Node.js下载及安装详细教程

目录 Node.js安装详细教程 下载安装环境变量配置文件结构配置npm在安装全局模块时的路径和缓存cache的路径测试常见命令 Node.js安装详细教程 &#x1f441;官网下载地址:Download | Node.js (nodejs.org) 下载速度慢的话 可以使用网盘下载&#xff1a; https://pan.quark.…

文心一言 VS 讯飞星火 VS chatgpt (290)-- 算法导论21.3 3题

三、给出一个包含 m 个 MAKE-SET 、UNION 和 FINDSET 操作的序列(其中有 n 个是 MAKE-SET 操作)&#xff0c;当仅使用按秩合并时&#xff0c;需要 Ω(mlgn) 的时间。如果要写代码&#xff0c;请用go语言。 文心一言&#xff1a; 在并查集&#xff08;Union-Find&#xff09;数…