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 数字左侧自动补0
Mar 31 PHP
解决163/sohu/sina不能够收到PHP MAIL函数发出邮件的问题
Mar 13 PHP
PHP中运用jQuery的Ajax跨域调用实现代码
Feb 21 PHP
php日历制作代码分享
Jan 20 PHP
PHP实现连接设备、通讯和发送命令的方法
Oct 13 PHP
深入解析WordPress中加载模板的get_template_part函数
Jan 11 PHP
Symfony2获取web目录绝对路径、相对路径、网址的方法
Nov 14 PHP
PHP实现中国公民身份证号码有效性验证示例代码
May 03 PHP
php中文乱码问题的终极解决方案汇总
Aug 01 PHP
PHP长连接实现与使用方法详解
Feb 11 PHP
PHP5.5基于mysqli连接MySQL数据库和读取数据操作实例详解
Feb 16 PHP
PHP文件类型检查及fileinfo模块安装使用详解
May 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 PHP
PHP中文件上传的一个问题
2010/09/04 PHP
在windows服务器开启php的gd库phpinfo中未发现
2013/01/13 PHP
优化PHP代码技巧的小结
2013/06/02 PHP
ThinkPHP多表联合查询的常用方法
2020/03/24 PHP
PHP下的浮点运算不准的解决方法
2016/10/27 PHP
php面向对象程序设计入门教程
2019/06/22 PHP
Aster vs KG BO3 第三场2.18
2021/03/10 DOTA
JavaScript 利用StringBuffer类提升+=拼接字符串效率
2009/11/24 Javascript
jQuery.Validate 使用笔记(jQuery Validation范例 )
2010/06/25 Javascript
兼容IE和Firefox的javascript获取iframe文档内容的函数
2011/08/15 Javascript
js实现漂浮回顶部按钮实例
2015/05/06 Javascript
Jquery针对tr td的一些实用操作方法(必看篇)
2016/10/05 Javascript
深入理解react-router@4.0 使用和源码解析
2017/05/23 Javascript
VUE饿了么树形控件添加增删改功能的示例代码
2017/10/17 Javascript
Node.js Buffer用法解读
2018/05/18 Javascript
vue如何进行动画的封装
2018/09/26 Javascript
深入探索VueJS Scoped CSS 实现原理
2019/09/23 Javascript
解决vue动态下拉菜单 有数据未反应的问题
2020/08/06 Javascript
[40:53]完美世界DOTA2联赛PWL S3 Magma vs DLG 第二场 12.18
2020/12/20 DOTA
用Python脚本生成Android SALT扰码的方法
2013/09/18 Python
Python 使用os.remove删除文件夹时报错的解决方法
2017/01/13 Python
Python实现求数列和的方法示例
2018/01/12 Python
matplotlib调整子图间距,调整整体空白的方法
2018/08/03 Python
python gensim使用word2vec词向量处理中文语料的方法
2019/07/05 Python
PyCharm 配置远程python解释器和在本地修改服务器代码
2019/07/23 Python
python 实现屏幕录制示例
2019/12/23 Python
jupyter notebook中美观显示矩阵实例
2020/04/17 Python
python 利用Pyinstaller打包Web项目
2020/10/23 Python
详解vscode实现远程linux服务器上Python开发
2020/11/10 Python
巴西美妆购物网站:Kutiz Beauté
2019/03/13 全球购物
语文课外活动总结
2014/08/27 职场文书
安全在我心中演讲稿
2014/09/01 职场文书
创业计划书之青年旅馆
2019/09/23 职场文书
Nginx缓存设置案例详解
2021/09/15 Servers
Nginx配置之禁止指定IP访问
2022/05/02 Servers