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 xml留言板 xml存储数据的简单例子
Aug 24 PHP
PHP面向对象——访问修饰符介绍
Nov 08 PHP
php5.3 goto函数介绍和示例
Mar 21 PHP
Discuz批量替换帖子内容的方法(使用SQL更新数据库)
Jun 23 PHP
Yii使用find findAll查找出指定字段的实现方法
Sep 05 PHP
PHP文件操作之获取目录下文件与计算相对路径的方法
Jan 08 PHP
PHP链表操作简单示例
Oct 15 PHP
PHP使用xpath解析XML的方法详解
May 20 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
Nov 17 PHP
微信公众平台开发教程③ PHP实现微信公众号支付功能图文详解
Apr 10 PHP
php实现的支付宝网页支付功能示例【基于TP5框架】
Sep 16 PHP
解决laravel5.4下的group by报错的问题
Oct 16 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数组和explode函数示例总结
2015/05/08 PHP
PHP SPL标准库之接口(Interface)详解
2015/05/11 PHP
Yii框架实现记录日志到自定义文件的方法
2017/05/23 PHP
详解PHP变量传值赋值和引用赋值变量销毁
2019/03/23 PHP
js或css文件后面跟参数的原因说明
2010/01/09 Javascript
JQuery slideshow的一个小问题(如何发现及解决过程)
2013/02/06 Javascript
js实现右下角可关闭最小化div(可用于展示推荐内容)
2013/06/24 Javascript
jQuery延迟加载图片插件Lazy Load使用指南
2015/03/25 Javascript
javascript日期计算实例分析
2015/06/29 Javascript
Easyui ueditor 整合解决不能编辑的问题(推荐)
2017/06/25 Javascript
浅谈原生JS中的延迟脚本和异步脚本
2017/07/12 Javascript
基于jquery实现五星好评
2017/11/18 jQuery
解决linux下node.js全局模块找不到的问题
2018/05/15 Javascript
微信小程序实现漂亮的弹窗效果
2020/05/26 Javascript
js实现自定义右键菜单
2020/05/18 Javascript
JavaScript类的继承多种实现方法
2020/05/30 Javascript
js实现飞机大战游戏
2020/08/26 Javascript
JSONObject与JSONArray使用方法解析
2020/09/28 Javascript
[43:49]LGD vs CHAOS 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
[04:03][TI9趣味短片] 小鸽子茶话会
2019/08/20 DOTA
python使用range函数计算一组数和的方法
2015/05/07 Python
Anaconda多环境多版本python配置操作方法
2017/09/12 Python
浅谈python3发送post请求参数为空的情况
2018/12/28 Python
浅析PyTorch中nn.Module的使用
2019/08/18 Python
Python 日志logging模块用法简单示例
2019/10/18 Python
opencv python Canny边缘提取实现过程解析
2020/02/03 Python
python实现文字版扫雷
2020/04/24 Python
CSS3属性box-shadow使用指南
2014/12/09 HTML / CSS
意大利网上购书网站:Libraccio.it
2021/02/03 全球购物
万户网络JAVA程序员岗位招聘笔试试卷
2013/01/08 面试题
网络工程师个人的自我评价范文
2013/10/01 职场文书
企业文化学习心得体会
2016/01/21 职场文书
民事调解协议书
2016/03/21 职场文书
Vue实现动态查询规则生成组件
2021/05/27 Vue.js
Python移位密码、仿射变换解密实例代码
2021/06/27 Python
关于MySQL临时表为什么可以重名的问题
2022/03/22 MySQL