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 相关文章推荐
example2.php
Oct 09 PHP
用PHP制作静态网站的模板框架(二)
Oct 09 PHP
php str_pad() 将字符串填充成指定长度的字符串
Feb 23 PHP
PHP仿博客园 个人博客(2) 数据库增添改删
Jul 05 PHP
仿dedecms下拉分页样式修改的thinkphp分页类实例
Oct 30 PHP
使用Thinkphp框架开发移动端接口
Aug 05 PHP
详解php比较操作符的安全问题
Dec 03 PHP
PHP+MySQL实现无极限分类栏目的方法
Dec 23 PHP
PHP+Redis 消息队列 实现高并发下注册人数统计的实例
Jan 29 PHP
Linux下 php7安装redis的方法
Nov 01 PHP
PHP实现创建一个RPC服务操作示例
Feb 23 PHP
Yii 实现数据加密和解密
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
thinkphp的URL路由规则与配置实例
2014/11/26 PHP
PHP微信支付实例解析
2016/07/22 PHP
Thinkphp开发--集成极光推送
2017/09/15 PHP
php7下的filesize函数
2019/09/30 PHP
提高代码性能技巧谈—以创建千行表格为例
2006/07/01 Javascript
jscript之Open an Excel Spreadsheet
2007/06/13 Javascript
Cookie 小记
2010/04/01 Javascript
js动态添加表格数据使用insertRow和insertCell实现
2014/05/22 Javascript
JavaScript判断字符长度、数字、Email、电话等常用判断函数分享
2015/04/01 Javascript
jQuery幻灯片带缩略图轮播效果代码分享
2015/08/17 Javascript
在JavaScript中对HTML进行反转义详解
2016/05/18 Javascript
细数JavaScript 一个等号,两个等号,三个等号的区别
2016/10/09 Javascript
jqGrid翻页时数据选中丢失问题的解决办法
2017/02/13 Javascript
vuejs 单文件组件.vue 文件的使用
2017/07/28 Javascript
Node.js创建HTTP文件服务器的使用示例
2018/05/11 Javascript
vue.js层叠轮播效果的实例代码
2018/11/08 Javascript
JavaScript多种图形实现代码实例
2020/06/28 Javascript
[01:00:06]加油DOTA_EP01_网络版
2014/08/09 DOTA
[04:14]从西雅图到上海——玩家自制DOTA2主题歌曲应援TI9
2019/07/11 DOTA
对numpy和pandas中数组的合并和拆分详解
2018/04/11 Python
详解Django解决ajax跨域访问问题
2018/08/24 Python
python读取xlsx的方法
2018/12/25 Python
Python closure闭包解释及其注意点详解
2019/08/28 Python
Python网络爬虫信息提取mooc代码实例
2020/03/06 Python
如何基于Python爬取隐秘的角落评论
2020/07/02 Python
python3.7.3版本和django2.2.3版本是否可以兼容
2020/09/01 Python
英国网上购买门:Direct Doors
2018/06/07 全球购物
Hudson Jeans官网:高级精制牛仔裤
2018/11/28 全球购物
法国春天百货官网:Printemps.com
2020/06/29 全球购物
应届生求职信写作技巧
2013/10/24 职场文书
教师先进工作者事迹材料
2014/05/01 职场文书
2014年党课学习材料
2014/05/11 职场文书
给学校建议书范文
2014/05/13 职场文书
入党宣誓仪式主持词
2015/06/29 职场文书
中秋晚会致辞
2015/07/31 职场文书
写作之关于描写老人的好段摘抄
2019/11/14 职场文书