php调用接口发送短信

article/2025/9/18 18:43:26
首先在各平台上申请短信接口权限

我是在京东万象上申请的短信权限,发送短信权限都是有测试次数,不用收费
在这里插入图片描述

我们可以看到请求参数、返回参数、返回示例值,按照他的格式就可以进行访问接口来进行发送短信操作,需要注意的是因为是测试数据,没有购买所以这里的content是不能自定义的,只能按照他的要求来写:【凯信通】您的验证码是:$code,appkey当你注册京东万象完成之后就可以查看自己的appkey。

在这里插入图片描述

我这里使用的是thinkphp5框架

1、发送短信的前台页面
<!DOCTYPE html>
<html><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=9; IE=8; IE=7; IE=EDGE"><meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /><title>个人注册</title><link rel="stylesheet" type="text/css" href="/static/home/css/all.css" /><link rel="stylesheet" type="text/css" href="/static/home/css/pages-register.css" /><script type="text/javascript" src="/static/home/js/all.js"></script><script type="text/javascript" src="/static/home/js/pages/register.js"></script>
</head><body><div class="register py-container "><!--head--><div class="logoArea"><a href="" class="logo1"></a></div><!--register--><div class="registerArea"><h3>注册新用户<span class="go">我有账号,去<a href="login.html" target="_blank">登陆</a></span></h3><div class="info"><form action="{:url('phone')}" method="post" id="reg_form" class="sui-form form-horizontal"><div class="control-group"><label class="control-label">手机号:</label><div class="controls"><input type="text" id="phone" name="phone" placeholder="请输入你的手机号" class="input-xfat input-xlarge"><span class="error"></span></div></div><div class="control-group"><label for="code" class="control-label">验证码:</label><div class="controls"><input type="text" id="code" name="code" placeholder="验证码" class="input-xfat input-xlarge" style="width:120px"><button type="button" class="btn-xlarge" id="dyMobileButton">发送验证码</button><span class="error"></span></div></div><div class="control-group"><label for="password" class="control-label">登录密码:</label><div class="controls"><input type="password" id="password" name="password" placeholder="设置登录密码" class="input-xfat input-xlarge"><span class="error"></span></div></div><div class="control-group"><label for="repassword" class="control-label">确认密码:</label><div class="controls"><input type="password" id="repassword" name="repassword" placeholder="再次确认密码" class="input-xfat input-xlarge"><span class="error"></span></div></div><div class="control-group"><label class="control-label"></label><div class="controls btn-reg"><a id="reg_btn" class="sui-btn btn-block btn-xlarge btn-danger reg-btn" href="javascript:;">完成注册</a></div></div></form><div class="clearfix"></div></div></div></div>
<script>$(function(){//点击 注册  提交表单$('#reg_btn').click(function(){//提交表单$('form').submit();});//发送验证码$('#dyMobileButton').click(function(){//获取手机号var phone = $('#phone').val();if(phone == ''){//手机号不能为空$('#phone').next().html('手机号不能为空');return;}else if(!/^1[3-9]\d{9}$/.test(phone)){//手机号格式不正确$('#phone').next().html('手机号格式不正确');return;}else{$('#phone').next().html('');}var time = 60;//设置定时器  倒计时效果 ,发送短信接口调用时间前台限制var timer = setInterval(function(){time--;if(time > 0){//正在倒计时$('#dyMobileButton').html('重新发送:' + time + '秒');$('#dyMobileButton').prop('disabled', true);}else{//停止倒计时$('#dyMobileButton').html('发送验证码');$('#dyMobileButton').prop('disabled', false);clearInterval(timer);}}, 1000);//发送ajax请求,来进行调用接口实现验证码的发送$.ajax({"url":"{:url('home/login/sendcode')}","type":"post","data":"phone=" + phone,"dataType":"json","success":function(res){//提示// 	alert(res.msg);return;}});});});
</script>
</body></html>

效果展示:

在这里插入图片描述

当点击发送验证码时会请求login控制器的sendcode方法来进行验证码的发送

2、sendcode发送验证码控制器方法
 //发送验证码public function sendcode(){//接收参数$params = input();//参数检测$validate = $this->validate($params,['phone|手机号' => 'require|regex:1[3-9]\d{9}']);if ($validate !== true){$res= ['code' =>  440,'msg' => '参数错误!'];echo json_encode($res);die;}//从cache中获取当前手机号码的发送验证码时间,这个时间是在调用发送短信接口成功时记录的。$time = cache('register_time_'.$params['phone']);//当间隔时间小于60秒时,不允许再次调用发送短信请求,这里是对发送短信时间做后台限制。if (time()-$time < 60){$res =['code'=>'403','msg'=>'发送验证码太频繁!'];echo json_encode($res);die;}//发送信息内容$code = mt_rand(1000,9999);//生成随机4位数作为验证码$content = "【凯信通】您的验证码是:{$code}";//调用公共方法send_msg实现短信的发送$suc = send_msg($params['phone'],$content);//返回数据if ($suc){//存验证码cache('register_code_'.$params['phone'] ,$code,180);//存储时间cache('register_time_'.$params['phone'],time(),180);$res = ['code'=>200,'msg'=>'短信发送成功','data'=>$content];echo json_encode($res);die;}else{$res= ['code' =>  404,'msg' => '发送信息失败!'];echo json_encode($res);die;}}

3、sendmsg公共函数,调用发送短信接口

我将appkey和请求地址url存储在config.php文件中如下

//短信验证配置
'msg' =>['url' => 'https://way.jd.com/kaixintong/kaixintong','appkey' => 'fd6ff7c134f41a4xxxxxxxxxxxxxxxxxxxxx'
],
if (!function_exists('send_msg')){function send_msg($mobile,$content){//获取config中的地址和appkey$appkey = config('msg.appkey');$url = config('msg.url');//https://way.jd.com/chuangxin/dxjk?mobile=13568813957&content=【创信】你的验证码是:5873,3分钟内有效!&appkey=您申请的APPKEY 点此获取APPKEY//拼接请求地址:get请求$url .= '?mobile='.$mobile.'&content='.$content.'&appkey='.$appkey;  //使用curl发送请求,调用发送短信接口$res = curl_request($url,false,[],true);if(!$res){return false;}//将返回的json字符串转化为数组$arr = json_decode($res,true);//从接口文档中可以看出,只有code为10000时才发送成功,返回成功if (isset($arr['code']) && $arr['code'] == 10000){return true;}else{return false;}}
}
3、curl_request发送请求函数,这是之前封装的curl发送请求方法
if (!function_exists('curl_request')){function curl_request($url,$post=true,$params=[],$https=true){//初始化请求会话$ch = curl_init($url);if ($post){//设置请求方式为postcurl_setopt($ch,CURLOPT_POST,true);//设置请求参数curl_setopt($ch,CURLOPT_POSTFIELDS,$params);}if ($https){//如果是https协议,禁止服务器验证本地证书curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);}//发送请求,获取返回参数curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);$res = curl_exec($ch);//关闭请求curl_close($ch);return $res;}
}
4、注册时login控制器phone方法
//手机验证码注册账号
public function phone(){//接受参数$params = input();//参数检测$validate = $this->validate($params,['phone|手机号' => 'require|regex:1[3-9]\d{9}|unique:user,phone','code|验证码' => 'require|length:4','password|密码' => 'require|length:6,20|confirm:repassword']);//参数验证if ($validate !== true){$this->error($validate);}//验证码检验//从cache中获取该号码存储的验证码$code = cache('register_code_'.$params['phone']);//验证码进行验证输入的验证码是否为短信发送的验证码if ($code != $params['code']){$this->error('验证码错误');}//校验完成验证码失效cache('register_code_'.$params['phone'],null);//数据处理密码加密:此处encrypt1是自己封装的密码加密函数。$params['password'] = encrypt1($params['password']);//默认用户名为注册电话号码$params['username'] = $params['phone'];//调用模型方法存入数据库,即可完成注册操作。User::create($params,true);//跳转页面$this->redirect('home/login/login');
}

http://chatgpt.dhexx.cn/article/8014P3tp.shtml

相关文章

PHP之阿里云短信接口接入

一、先到阿里云短信服务中申请模板和签名 阿里云快速学习入口 二、模板申请完成后&#xff0c;获取AccessKey&#xff0c;并短信接口配置 注意保存&#xff1a;AccessKeyId和AccessKeySecret 短信接口配置 三、获取短信模版CODE 四、下载接口文件 短信产品相关的SDK及DEMO程序…

SMS 短信 API 接口调用

SMS 短信 API 接口调用 一、下载SDK开发包 本文以 SUBMAIL SMS 为例。 前往-》开发文档 -》SDK开发包下载页面&#xff0c;下载对应语言的SDK开发包。 SUBMAIL 提供多达9种语言的开发包&#xff0c;SDK 集成了 SUBMAIL 的API请求方法&#xff0c;并将API中的参数进行封装&a…

短信接口示例

短信验证码在各类App和网站中广泛使用&#xff0c;这里介绍一些技术对接中常用的接口以及相关实例为各位提供参考。 首先&#xff0c;预先提供短信模板&#xff0c;保证通道提供稳定服务&#xff0c;平台进行内容审核&#xff0c;而后方能使用通用发送接口发短信&#xff0c;该…

短信API接口

一、关于短信API接口 第三方短信服务商提供短信API接口&#xff0c;短信一般是编辑好内容&#xff0c;调用接口发送即可。我们这里提供一个注册好的账号&#xff0c;其中短信API服务器地址为&#xff1a; https://itdage.com/kkb/kkbsms 参数列表为&#xff1a; key&#xff1a…

阿里云的短信服务php接入笔记

公司要做用户手机号注册&#xff0c;所以要接入短信发送服务&#xff0c;刚开始接的是快递100的&#xff0c;都接好了&#xff0c;后来又说用阿里云的&#xff0c;怎么办&#xff0c;拿工资办事&#xff0c;领导们高兴就好 下面记录一下阿里云的短信平台的接入步骤&#xff0c…

阿里云短信接口-PHP

composer安装SDK&#xff1a; composer require alibabacloud/dysmsapi-20170525 2.0.22 也可以下载SDK包手动安装&#xff0c;下面是api接口文档&#xff1a;阿里云 OpenAPI 开发者门户 调用接口前&#xff0c;请申请短信签名和短信模板&#xff0c;并确保签名和模板已审核…

手把手教你php调用短信接口(smsapi)实现发送短信验证码

闪速码短信平台&#xff08;www.shansuma.com&#xff09;不仅支持个人、企业使用&#xff0c;还可以免费试用200条&#xff0c;所以本文使用闪速码平台提供的短信接口来演示&#xff0c;操作流程和阿里云、腾讯云一致&#xff0c;不再赘述。 文章目录 目录 前言 一、账号注…

Xmind 8 PRO 2018年8月最新版本直接安装免破解版本

XMind 是一款非常实用的商业思维导图软件&#xff0c;应用全球最先进的Eclipse RCP 软件架构&#xff0c;全力打造易用、高效的可视化思维软件&#xff0c;强调软件的可扩展、跨平台、稳定性和性能&#xff0c;致力于使用先进的软件技术帮助用户真正意义上提高生产率。 找了很…

XMind8破解版安装

1、官网下载新版xmind&#xff0c;下载链接&#xff08;选择zip格式&#xff09;&#xff1a; http://dl2.xmind.cn/xmind-8-update8-windows.zip 2、下载破解补丁&#xff0c;下载链接&#xff1a; https://stormxing.oss-cn-beijing.aliyuncs.com/files/XMindCrack.jar …

Xmind激活版双击文件无法打开的解决方案

声明&#xff1a;请大家支持正版&#xff01;此文仅作个人交流学习&#xff01; 很多小伙伴安装完Xmind后会发现双击无法打开文件&#xff0c;只能在应用界面打开&#xff0c;我在网上也看了很多解决方案&#xff0c;但是很多都是没用的&#xff0c;比如这个&#xff1a; 还有…

破解版xmind 8

1.先去官网下载对应的系统版本&#xff1a;https://www.xmind.cn/&#xff0c;网速贼慢 2.使用链接下载&#xff1a;https://pan.baidu.com/s/1pqjzEneTiW11w2tywaLWuA 提取码&#xff1a;2fet 3.包含xmind-8-update.exe XMindCrack.jar XMind序列号.txt 4.选择免费下载. 5…

思维导图软件XMind破解版下载地址 附最简安装教程

XMind XMind 是一款非常实用的商业思维导图软件&#xff0c;应用全球最先进的Eclipse RCP 软件架构&#xff0c;全力打造易用、高效的可视化思维软件&#xff0c;强调软件的可扩展、跨平台、稳定性和性能&#xff0c;致力于使用先进的软件技术帮助用户真正意义上提高生产率。 …

Xmind8 Pro破解版

思维导图又叫心智导图&#xff0c;是表达发散性思维的有效图形思维工具 &#xff0c;它简单却又很有效&#xff0c;是一种实用性的思维工具。思维导图运用图文并重的技巧&#xff0c;把各级主题的关系用相互隶属与相关的层级图表现出来&#xff0c;把主题关键词与图像、颜色等建…

Xmind 8 Pro破解版安装激活教程(Windows版)

废话不多说!!!直接上安装包链接 链接&#xff1a;https://pan.baidu.com/s/14qY_WBL0MTjri9Jv9E38NQ 密码&#xff1a;9on5 安装路径一定要记住&#xff08;最好别安装在C盘&#xff09; 如&#xff1a;E:\XMind&#xff08;根据需求自定义&#xff09;安装好之后&#xff0c;将…

xmind免费安装使用教程

一、简介 xmind 是一款功能强大的思维导图和脑图制作工具&#xff0c;它可以帮助用户将复杂的信息和想法以图形化的方式进行组织和展示&#xff0c;使得思维更加清晰和有条理。xmind 是一款跨平台的思维导图软件&#xff0c;支持 Windows、MacOS 和 Linux 系统。它提供了丰富的…

Xmind 8 pro 软件破解版(经济条件允许的情况下,请支持正版)

前言 Xmind是一款非常专业的思维导图软件&#xff0c;收费好几百元&#xff0c;不过还是很多用户&#xff0c;因为目前用的最多&#xff0c;也简单易用。XMind界面友好、功能优秀、可用性极强&#xff0c;从而数百万人选择了它&#xff0c;XMind不仅可以绘制思维导图&#xff…

Xmind2021绿色版,思维导图最佳软件

Xmind2021绿色版&#xff0c;思维导图最佳软件 序言 ​ 首先很抱歉拖更很久了&#xff0c;因为各种学术上和未来安排上的迷茫和困惑&#xff0c;导致我无心管理公众号&#xff0c;有一段时间没有为大家带来各类软件和经验分享&#xff0c;但是各位研究生小伙伴还是积极推荐CS…

linux版本的xmind怎么安装教程,linux安装xmind

下面给大家介绍linux安装xmind的方法&#xff0c;希望对需要的朋友有所帮助&#xff0c;更多Linux使用教程可直接访问Linux视频教程进行学习&#xff01; linux安装xmind 1.下载xmind 百度&#xff0c;官网下载xmind linux版本 2.解压到安装目录 我的安装目录是/opt/xmind-8-li…

Xmind 8 pro 软件破解版

Xmind是一款非常专业的思维导图软件&#xff0c;收费好几百元&#xff0c;不过还是很多用户&#xff0c;因为目前用的最多&#xff0c;也简单易用。XMind界面友好、功能优秀、可用性极强&#xff0c;从而数百万人选择了它&#xff0c;XMind不仅可以绘制思维导图&#xff0c;还能…

window下xmind-pro-8破解版

软件地址 &#xff1a;https://pan.baidu.com/s/1Y-wv7pypH-8yIyA1RXotfA 提取码: sy9j 激活xmind 找到 XMind 安装目录, 如: C:\Program Files (x86)\XMind&#xff0c;将下载的破解补丁复制到这个目录中。以文本格式打开安装目录中 XMind.ini在 XMind.ini 最后追加一个字段…