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基础知识:控制结构
Dec 13 PHP
php中看实例学正则表达式
Dec 25 PHP
php debug 安装技巧
Apr 30 PHP
php导出word文档与excel电子表格的简单示例代码
Mar 08 PHP
php中mkdir函数用法实例分析
Nov 15 PHP
PHP处理postfix邮件内容的方法
Jun 16 PHP
WordPress中缩略图的使用以及相关技巧
Nov 24 PHP
PHP实现可自定义样式的分页类
Mar 29 PHP
zen cart实现订单中增加paypal中预留电话的方法
Jul 12 PHP
实例分析PHP将字符串转换成数字的方法
Jan 27 PHP
PHP切割整数工具类似微信红包金额分配的思路详解
Sep 18 PHP
PHP数组基本用法与知识点总结
Jun 02 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
PHP无法访问远程mysql的问题分析及解决
2013/05/16 PHP
Thinkphp开发--集成极光推送
2017/09/15 PHP
TP5(thinkPHP5框架)实现显示错误信息及行号功能的方法
2019/06/03 PHP
通过JAVASCRIPT读取ASP设定的COOKIE
2007/02/15 Javascript
javascript setTimeout和setInterval 的区别
2009/12/08 Javascript
jquery之empty()与remove()区别说明
2010/09/10 Javascript
jquery 事件冒泡的介绍以及如何阻止事件冒泡
2012/12/25 Javascript
Js冒泡事件详解及阻止示例
2014/03/21 Javascript
基于jQuery仿淘宝产品图片放大镜代码分享
2020/06/23 Javascript
后端接收不到AngularJs中$http.post发送的数据原因分析及解决办法
2016/07/05 Javascript
BootStrap中的表单大全
2016/09/07 Javascript
Django+Vue.js搭建前后端分离项目的示例
2017/08/07 Javascript
小程序视频或音频自定义可拖拽进度条的示例代码
2018/09/30 Javascript
如何实现js拖拽效果及原理解析
2020/05/08 Javascript
[00:50]深扒TI7聊天轮盘语音出处6
2017/05/11 DOTA
Python入门篇之文件
2014/10/20 Python
Python实现简单截取中文字符串的方法
2015/06/15 Python
Phantomjs抓取渲染JS后的网页(Python代码)
2016/05/13 Python
使用python3.5仿微软记事本notepad
2016/06/15 Python
python获取酷狗音乐top500的下载地址 MP3格式
2018/04/17 Python
Python函数基础实例详解【函数嵌套,命名空间,函数对象,闭包函数等】
2019/03/30 Python
详解Python并发编程之从性能角度来初探并发编程
2019/08/23 Python
Pandas-Cookbook 时间戳处理方式
2019/12/07 Python
浅谈matplotlib中FigureCanvasXAgg的用法
2020/06/16 Python
python BeautifulSoup库的安装与使用
2020/12/17 Python
日本高端护肤品牌:Tatcha
2016/08/29 全球购物
英国汽车和货车租赁网站:Hertz英国
2016/09/02 全球购物
ET Mall东森购物网:东森严选
2017/03/06 全球购物
英国首屈一指的票务公司:See Tickets
2019/05/11 全球购物
豪华床上用品 :Jennifer Adams
2019/09/15 全球购物
培训讲师邀请函
2014/01/10 职场文书
计算机科学系职业生涯规划书
2014/03/08 职场文书
2014年9.18纪念日演讲稿
2014/09/14 职场文书
夫妻忠诚协议范文
2014/11/16 职场文书
小学中队委竞选稿
2015/11/20 职场文书
高一作文之暖冬
2019/11/09 职场文书