php实现短信发送代码


Posted in PHP onJuly 05, 2015

卓望的短信发送。PHP格式。都要不习惯用xml传输数据格式了
标签: <无>

1. [代码][PHP]代码    

<?php
 
class Sms
{
  private $userId = 'XXXXX';
 
  private $password = 'XXXXXX';
 
  private $templateId = 'XXXXXX';
 
  /**
   * @var string 短信服务器地址
   */
  private $server_uri = 'XXXXXX';
 
  private $port = 'XXXXXX';
 
 
  /**
   * 发送短信
   * @param $message 信息内容
   * @param $mobile 手机号码
   * @param string $signature 签名
   * @return bool 成功返回true, 网络请求失败返回false, 其他返回失败编码
   */
  public function sendOneMsg($message, $mobile, $signature='demo')
  {
 
    $xml_content = $this->createXmlContent($message, $mobile, $signature);
 
    $xml = $this->sendHttpRequest(trim($xml_content));
 
 
    if(! $xml) {
      return false; // 网络请求失败
    }
 
    // 解析返回的编码
    $res = simplexml_load_string($xml);
    if($res->retCode == 1000) {
      return true;
    }
 
    return $res->retCode;
 
  }
 
  /**
   * 创建 xml内容
   * @param $message 信息
   * @param $mobile 要发送的手机号码
   * @param $signature 签名
   * @return string
   */
  private function createXmlContent($message, $mobile, $signature)
  {
    $data = array(
      'userId' => $this->userId, // 账号
      'password' => $this->password, // 小写的md5后的用户密码
      'templateId' => $this->templateId, // 模板id
      'phone' => $mobile,
      'port' => $this->port,
      'data' => $message,
      'signature' => $signature,
    );
 
    // 设置xml版本和编码
    $dom = new \DOMDocument('1.0', 'UTF-8');
 
    // 创建根节点
    $request = $dom->createElement('request');
    $dom->appendChild($request);
 
    foreach($data as $key => $val) {
      // 创建元素
      $key = $dom->createElement($key);
      $request->appendChild($key);
 
      // 创建元素值
      $text = $dom->createTextNode($val);
      $key->appendChild($text);
    }
 
    return $dom->saveXML();
  }
 
  /**
   * 发送http请求
   * @param $xml_content
   * @return mixed
   */
  private function sendHttpRequest($xml_content)
  {
    $now = time();
    $headers[] = 'Content-Type:text/xml';
    $headers[] = 'Content-Length:' . strlen($xml_content);
    $headers[] = 'Cmd:mt';
    $headers[] = 'TS:'. $now;
    $headers[] = 'Authorization:' . strtoupper(md5($xml_content. $now . $this->password));
 
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $this->server_uri);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_content);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    $res = curl_exec($ch);
    curl_close($ch);
    //header('Content-Type:text/html; charset=utf-8');
    return $res;
  }
 
}

以上所述就是本文的全部内容了,希望大家能够喜欢。

PHP 相关文章推荐
十天学会php之第八天
Oct 09 PHP
PHP安装攻略:常见问题解答(三)
Oct 09 PHP
PHP 解决utf-8和gb2312编码转换问题
Mar 18 PHP
PHP新手入门学习方法
May 08 PHP
CI框架封装的常用图像处理方法(缩略图,水印,旋转,上传等)
Nov 22 PHP
微信公众号开发之通过接口删除菜单
Feb 20 PHP
原生JS实现Ajax通过POST方式与PHP进行交互的方法示例
May 12 PHP
PHP实现函数内修改外部变量值的方法示例
Dec 28 PHP
PHP使用HTML5 FormData对象提交表单操作示例
Jul 02 PHP
php把文件设置为插件的技巧方法
Feb 03 PHP
TP5框架使用QueryList采集框架爬小说操作示例
Mar 26 PHP
ThinkPHP5.1的权限控制怎么写?分享一个AUTH权限控制
Mar 09 PHP
phpMyAdmin安装并配置允许空密码登录
Jul 04 #PHP
Ubuntu下安装PHP的mongodb扩展操作命令
Jul 04 #PHP
Cygwin中安装PHP方法步骤
Jul 04 #PHP
php使用Session和文件统计在线人数
Jul 04 #PHP
使用XHGui来测试PHP性能的教程
Jul 03 #PHP
编写PHP脚本过滤用户上传的图片
Jul 03 #PHP
在Windows系统下使用PHP生成Word文档的教程
Jul 03 #PHP
You might like
正则表达式语法
2006/10/09 Javascript
php中heredoc与nowdoc介绍
2014/12/25 PHP
10个超级有用值得收藏的PHP代码片段
2015/01/22 PHP
php中分页及SqlHelper类用法实例
2017/01/12 PHP
PHP利用百度ai实现文本和图片审核
2019/05/08 PHP
PHP基于phpqrcode类生成二维码的方法示例详解
2020/08/07 PHP
Js 弹出框口并返回值的两种常用方法
2010/12/30 Javascript
js Date概念详细介绍
2013/11/22 Javascript
jquery实现TAB选项卡鼠标经过带延迟效果的方法
2015/07/27 Javascript
深入理解js promise chain
2016/05/05 Javascript
深入理解jQuery之防止冒泡事件
2016/05/24 Javascript
详解如何较好的使用js
2016/12/16 Javascript
详解微信小程序开发之城市选择器 城市切换
2017/01/17 Javascript
Three.js的使用及绘制基础3D图形详解
2017/04/27 Javascript
BootStrap表单时间选择器详解
2017/05/09 Javascript
基于jQuery对象和DOM对象和字符串之间的转化实例
2017/08/08 jQuery
echarts学习笔记之箱线图的分析与绘制详解
2017/11/22 Javascript
详解vue组件基础
2018/05/04 Javascript
Node.js中你不可不精的Stream(流)
2018/06/08 Javascript
详解Vue-cli中的静态资源管理(src/assets和static/的区别)
2018/06/19 Javascript
js实现跟随鼠标移动的小球
2019/08/26 Javascript
js实现贪吃蛇游戏 canvas绘制地图
2020/09/09 Javascript
[01:02:17]2014 DOTA2华西杯精英邀请赛 5 24 DK VS VG
2014/05/26 DOTA
[22:59]VGJ.S vs VG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[03:12]完美世界DOTA2联赛PWL DAY6集锦
2020/11/05 DOTA
python实现2014火车票查询代码分享
2014/01/10 Python
python随机在一张图像上截取任意大小图片的方法
2019/01/24 Python
在macOS上搭建python环境的实现方法
2019/08/13 Python
python实现简单坦克大战
2020/03/27 Python
Python实现对word文档添加密码去除密码的示例代码
2020/12/29 Python
Solaris操作系统的线程机制
2015/07/28 面试题
3D空间设计学生找工作的自我评价
2013/10/28 职场文书
采购意向书范本
2014/03/31 职场文书
土建专业大学生自荐信范文
2014/04/09 职场文书
小学国庆节活动方案策划书
2014/09/16 职场文书
学生检讨书范文
2014/10/30 职场文书