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 多维数组的排序问题 根据二维数组中某个项排序
Nov 09 PHP
微信营销平台系统?刮刮乐的开发
Jun 10 PHP
php实现按照权重随机排序数据的方法
Jan 09 PHP
是 WordPress 让 PHP 更流行了 而不是框架
Feb 03 PHP
PHP匿名函数和use子句用法实例
Mar 16 PHP
yii2 modal弹窗之ActiveForm ajax表单异步验证
Jun 13 PHP
php排序算法实例分析
Oct 17 PHP
php事件驱动化设计详解
Nov 10 PHP
PHP5.6新增加的可变函数参数用法分析
Aug 25 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
Nov 17 PHP
PHP的mysqli_rollback()函数讲解
Jan 23 PHP
CodeIgniter框架实现的整合Smarty引擎DEMO示例
Mar 28 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读取文件内容的三种可行方法示例介绍
2014/02/08 PHP
php实现上传图片保存到数据库的方法
2015/02/11 PHP
php利用反射实现插件机制的方法
2015/03/14 PHP
JavaScript实现禁止后退的方法
2006/12/27 Javascript
JavaScript高级程序设计 阅读笔记(四) ECMAScript中的类型转换
2012/02/27 Javascript
JS中parseInt()和map()用法分析
2016/12/16 Javascript
微信小程序中多个页面传参通信的学习与实践
2017/05/05 Javascript
js实现放大镜特效
2017/05/18 Javascript
jquery append与appendTo方法比较
2017/05/24 jQuery
详解webpack 多页面/入口支持&amp;公共组件单独打包
2017/06/29 Javascript
Vue常用指令详解分析
2018/08/19 Javascript
iview form清除校验状态的实现
2019/09/19 Javascript
分享一款超好用的JavaScript 打包压缩工具
2020/04/26 Javascript
[01:10]DOTA2次级职业联赛 - U5战队宣传片
2014/12/01 DOTA
django框架如何集成celery进行开发
2017/05/24 Python
python 判断网络连通的实现方法
2018/04/22 Python
Django中使用Celery的方法示例
2018/11/29 Python
python实现LBP方法提取图像纹理特征实现分类的步骤
2019/07/11 Python
python Matplotlib底图中鼠标滑过显示隐藏内容的实例代码
2019/07/31 Python
浅析使用Python搭建http服务器
2019/10/27 Python
python和opencv构建运动检测器的实现
2021/03/03 Python
英国女鞋购物网站:Moda in Pelle
2019/02/18 全球购物
Clarks其乐鞋荷兰官网:Clarks荷兰
2019/07/05 全球购物
党员自我评价分享
2013/12/13 职场文书
大学生入党思想汇报
2014/01/01 职场文书
京剧自荐信
2014/01/26 职场文书
党员公开承诺践诺书
2014/03/25 职场文书
电气工程及其自动化专业求职信
2014/06/23 职场文书
《中国梦我的梦》大学生演讲稿
2014/08/20 职场文书
2015元旦主持词开场白和结束语
2014/12/14 职场文书
小学五年级语文上册教学计划
2015/01/22 职场文书
父母教会我观后感
2015/06/17 职场文书
2015年国庆节新闻稿
2015/07/18 职场文书
2015年电气技术员工作总结
2015/07/24 职场文书
2019终止劳动合同协议书最新范本!
2019/07/09 职场文书
教你使用Jenkins集成Harbor自动发布镜像
2022/04/03 Servers