适合PbootCMS的阿里云短信发送类

前言介绍

一款大佬分享的简单方便阿里云短信封装代码,不用官网复杂的SDK,快速上手。

现在我把它适配成pbootcms,可以拿来快速制作短信发送功能。

封装代码

<?php
/*** @author CMS88*  阿里云SMS*/
namespace core\sms;
use core\basic\Config;
class AliyunSms {// 保存错误信息public $error;// Access Key IDprivate $accessKeyId = '';// Access Access Key Secretprivate $accessKeySecret = '';// 签名private $signName = '';// 模版IDprivate $templateCode = '';public function __construct() {// 配置参数$this->accessKeyId = Config::get('sms_appid');$this->accessKeySecret = Config::get('sms_secret');$this->signName = Config::get('sms_signame');$this->templateCode = Config::get('sms_checkcodetpl');}private function percentEncode($string) {$string = urlencode ( $string );$string = preg_replace ( '/\+/', '%20', $string );$string = preg_replace ( '/\*/', '%2A', $string );$string = preg_replace ( '/%7E/', '~', $string );return $string;}/*** 签名* @param unknown $parameters            * @param unknown $accessKeySecret            * @return string*/private function computeSignature($parameters, $accessKeySecret) {ksort( $parameters );$canonicalizedQueryString = '';foreach ( $parameters as $key => $value ) {$canonicalizedQueryString .= '&' . $this->percentEncode ( $key ) . '=' . $this->percentEncode ( $value );}$stringToSign = 'GET&%2F&' . $this->percentencode ( substr ( $canonicalizedQueryString, 1 ) );$signature = base64_encode ( hash_hmac ( 'sha1', $stringToSign, $accessKeySecret . '&', true ) );return $signature;}/*** @param unknown $mobile            * @param unknown $verify_code            **/public function send_verify($mobile, $tpljson) {$params = array (//此处作了修改'SignName' => $this->signName,'Format' => 'JSON','Version' => '2017-05-25','AccessKeyId' => $this->accessKeyId,'SignatureVersion' => '1.0','SignatureMethod' => 'HMAC-SHA1','SignatureNonce' => uniqid (),'Timestamp' => gmdate ( 'Y-m-d\TH:i:s\Z' ),'Action' => 'SendSms','TemplateCode' => $this->templateCode,'PhoneNumbers' => $mobile,//'TemplateParam' => '{"code":"' . $verify_code . '"}' 'TemplateParam' => $tpljson   //更换为自己的实际模版);//var_dump($params);die;// 计算签名并把签名结果加入请求参数$params ['Signature'] = $this->computeSignature( $params, $this->accessKeySecret );// 发送请求(此处作了修改)//$url = 'https://sms.aliyuncs.com/?' . http_build_query ( $params );$url = 'http://dysmsapi.aliyuncs.com/?' . http_build_query ( $params );$result = json_decode( get_url($url) );if( isset($result->Code) && $result->Code=='OK' ) {return ['code'=>1,'msg'=>$result->Message];}else{return ['code'=>0,'msg'=>$result->Message];}}
}

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

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

相关文章

【maya逼真人物】灯光布置与调节

初始设置&#xff1a; 首先创建了一个Sky Dome Light&#xff08;天空穹顶灯&#xff09;&#xff0c;并使用HDRI贴图来提供基本环境光照。作者选择了一个包含天空和地面的HDRI图像&#xff0c;为场景提供初始照明。主光源&#xff08;Key Light&#xff09;&#xff1a; 创建了…

Mistral AI最新力作——Mistral Large媲美GPT-4

Mistral AI自豪地宣布&#xff0c;他们的最新力作——Mistral Large&#xff0c;已经正式面世。这款尖端的文本生成模型不仅在多语言理解上表现出色&#xff0c;更在推理能力上达到了顶级水平。Mistral Large能够处理包括文本理解、转换和代码生成在内的复杂多语言推理任务。 M…

36 - shell之sed

sed grep就是查找文本当中的内容&#xff0c;扩展正则表达式。 一、sed 1.1、sed的定义 sed是一种流编辑器&#xff0c;一次处理一行内容。 如果只是展示&#xff0c;会放在缓冲区&#xff08;模式空间&#xff09;&#xff0c;展示结束&#xff0c;会从模式空间把结果删除…

【LeetCode刷题】6. Z 字形变换

1. 题目链接2. 题目描述3. 解题方法4. 代码 1. 题目链接 6. Z 字形变换 2. 题目描述 3. 解题方法 假设一串字符串"abcdefghijklmnopqrstuvwx", 会有如下排列&#xff1a; 我们再以下标来看看排列 从下标来看&#xff0c;每个下标是有规律的 每一行的下标之间的差…

Java基础 - 练习(五)根据今天日期获取一周内的日期(基姆拉尔森公式)

基姆拉尔森计算公式用于计算一周内的日期。比如给你年月日&#xff0c;从而计算今天是星期几。 基姆拉尔森公式 Week (d2*m3*(m1)/5yy/4-y/100y/4001) mod 7&#xff0c; 3<m<14Week的取值范围是0 ~ 6&#xff0c;其中0代表星期日&#xff0c;1 ~ 6分别代表星期一到星期…

【ai】tx2-nx 开通samba

ubutn服务器加入了samba给jetson也加入一个samba 添加root用户 密码与nvidia一样 添加nvidia 到suoders中并添加samba账号 nvidia@tx2-nx:~$ nvidia@tx2-nx:~$ nvidia@tx2-nx:~$ nvidia@tx2-nx:~$ sudo vi /etc/sudoers nvidia@tx2-nx:~$ sudo chm

【第24章】Vue实战篇之用户信息展示

文章目录 前言一、准备1. 获取用户信息2. 存储用户信息3. 加载用户信息 二、用户信息1.昵称2.头像 三、展示总结 前言 这里我们来展示用户昵称和头像。 一、准备 1. 获取用户信息 export const userInfoService ()>{return request.get(/user/info) }2. 存储用户信息 i…

使用Python selenium爬虫领英数据,并进行AI岗位数据挖掘

随着OpenAI大火&#xff0c;从事AI开发的人趋之若鹜&#xff0c;这次使用Python selenium抓取了领英上几万条岗位薪资数据&#xff0c;并使用Pandas、matplotlib、seaborn等库进行可视化探索分析。 但领英设置了一些反爬措施&#xff0c;对IP进行限制封禁&#xff0c;因此会用到…

JavaWeb阶段学习知识点(二)

登录校验和JWT令牌实现 JWT使用方式 创建一个springboot项目,pom.xml引入jwt依赖 <dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.9.1</version></dependency><!-- 针对jdk17或…

每月 GitHub 探索|10 款引领科技趋势的开源项目

1.IT-Tools 仓库名称&#xff1a; CorentinTh/it-tools 截止发稿星数: 16842 (近一个月新增:5744) 仓库语言: Vue 仓库开源协议&#xff1a; GNU General Public License v3.0 引言 CorentinTh/it-tools 是一个开源项目&#xff0c;提供各种对开发者友好的在线工具&#xff0…

48-4 内网渗透 - Rotten Potato(烂土豆) 提权

一、Potato家族提权 在渗透测试中,Potato家族是一种常用的提权技术,主要利用Windows服务账户的特权来将已获取的权限提升至系统(SYSTEM)级别。这种技术利用了两个关键的特权:SeAssignPrimaryTokenPrivilege和SeImpersonatePrivilege,这些特权允许用户在其他用户的安全上下…

【C语言】14.数组指针与函数指针及其应用

一、数组指针 顾名思义&#xff0c;数组指针就是指向数组的指针。形如&#xff1a;int (*p)[10]; 注意&#xff1a;[]的优先级要高于*号的&#xff0c;所以必须加上&#xff08;&#xff09;来保证p先和*结合。 数组指针的使用 int arr[10] {0}; int (*parr)[10] &arr;…

numpy-stl库的基本使用及notebook下的使用

numpy-stl库的基本使用及notebook下的可视化 https://pypi.org/project/numpy-stl/ 安装 conda install -c conda-forge numpy-stl引入资源 import numpy as np import matplotlib.pyplot as plt from mpl_toolkits import mplot3d from stl import mesh读取stl文件 stl_fil…

springboot特殊问题处理2——springboot集成flowable实现工作流程的完整教程(一)

在实际项目开发过程中&#xff0c;流程相关的业务实现采用工作流会异常清晰明了&#xff0c;但是Activity学习成本和开发难度对追求效率的开发工作者来说异常繁琐&#xff0c;但是作为Activity的亲儿子之一的flowable&#xff0c;其轻量化的使用和对应的api会让开发者感受简单&…

超越GPT-4o!新王Claude 3.5 Sonnet来啦!免费使用

目录 01 比GPT-4o更智能&#xff0c;比Claude 3 Opus快两倍 02 最强视觉Model 03 使用Claude的新方式&#xff1a;Artifacts 04 安全性和透明度 Anthropic刚刚发布了全新大模型Claude 3.5 Sonnet&#xff0c;号称是迄今为止最智能的模型。一文几步教你注册使用Claude 3.5 S…

【面试题】风险评估和应急响应的工作流程

风险评估和应急响应是网络安全管理中两个重要的环节。下面分别介绍它们的工作流程&#xff1a; 一、风险评估工作流程&#xff1a; 1.确定评估范围&#xff1a;明确需要评估的信息系统或资产的范围。 2.资产识别&#xff1a;识别并列出所有需要评估的资产&#xff0c;包括硬件…

prometheus+grafana搭建监控系统

1.prometheus服务端安装 1.1下载包 使用wget下载 &#xff08;也可以直接去官网下载包Download | Prometheus&#xff09; wget https://github.com/prometheus/prometheus/releases/download/v2.44.0/prometheus-2.44.0.linux-amd64.tar.gz1.2解压 tar xf prometheus-2.44…

Modbus协议转Profibus协议网关模块连PLC与激光发射器通讯

一、概述 在PLC控制系统中&#xff0c;从站设备通常以Modbus协议&#xff0c;ModbusTCP协议&#xff0c;Profinet协议&#xff0c;Profibus协议&#xff0c;Profibus DP协议&#xff0c;EtherCAT协议&#xff0c;EtherNET协议等。本文将重点探讨PLC连接Modbus协议转Profibus协…

RGB彩色模型理解与编程实例

一、引言 RGB彩色模型中的R、G和B为三原色&#xff0c;通常R、G和B分别用8位表示&#xff0c;因此24位的RGB 真彩色图像能表示16777216种颜色。在如右图所示RGB彩色立方体可知&#xff0c;任意两种原色混合可以合成一种新的颜色。红&#xff08;1&#xff0c;0&#xff0c;0&a…

微型操作系统内核源码详解系列五(3):cm3下调度的开启

系列一&#xff1a;微型操作系统内核源码详解系列一&#xff1a;rtos内核源码概论篇&#xff08;以freertos为例&#xff09;-CSDN博客 系列二&#xff1a;微型操作系统内核源码详解系列二&#xff1a;数据结构和对象篇&#xff08;以freertos为例&#xff09;-CSDN博客 系列…