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类
Jul 15 PHP
使用PHP数组实现无限分类,不使用数据库,不使用递归.
Dec 09 PHP
php mssql 日期出现中文字符的解决方法
Mar 10 PHP
PHP获取当前文件所在目录 getcwd()函数
May 13 PHP
PHP 执行系统外部命令 system() exec() passthru()
Aug 11 PHP
ThinkPHP调用百度翻译类实现在线翻译
Jun 26 PHP
PHP中使用sleep造成mysql读取失败的案例和解决方法
Aug 21 PHP
PHP制作万年历
Jan 07 PHP
thinkphp如何获取客户端IP
Nov 03 PHP
Zend Framework分页类用法详解
Mar 22 PHP
php 5.4 全新的代码复用Trait详解
Jan 05 PHP
Yii2框架实现数据库常用操作总结
Feb 08 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中其实也可以用方法链
2011/11/10 PHP
PHP 处理TXT文件(打开/关闭/检查/读取)
2013/05/13 PHP
成为好程序员必须避免的5个坏习惯
2014/07/04 PHP
浏览器常用高宽的jquery插件
2011/02/24 Javascript
关于页面嵌入swf覆盖div层的问题的解决方法
2014/02/11 Javascript
javascript中不提供sleep功能如何实现这个功能
2014/05/27 Javascript
javascript 10进制和62进制的相互转换
2014/07/31 Javascript
jQuery基于toggle实现click触发DIV的显示与隐藏问题分析
2016/06/12 Javascript
Bootstrap3 Grid system原理及应用详解
2016/09/30 Javascript
Node.js学习入门
2017/01/03 Javascript
JS实现图片点击后出现模态框效果
2017/05/03 Javascript
详解vee-validate的使用个人小结
2017/06/07 Javascript
Vue v2.4中新增的$attrs及$listeners属性使用教程
2018/01/08 Javascript
解决vue select当前value没有更新到vue对象属性的问题
2018/08/30 Javascript
jQuery实现为动态添加的元素绑定事件实例分析
2018/09/07 jQuery
微信小程序与后台PHP交互的方法实例分析
2018/12/10 Javascript
JS实现选项卡效果的代码实例
2019/05/20 Javascript
vue与iframe之间的信息交互的实现
2020/04/08 Javascript
JavaScript快速调试的两个技巧
2020/11/04 Javascript
[04:13]2014DOTA2国际邀请赛 专访DC目前形势不容乐观
2014/07/12 DOTA
python多线程http下载实现示例
2013/12/30 Python
python实现字符串加密 生成唯一固定长度字符串
2019/03/22 Python
Python中使用pypdf2合并、分割、加密pdf文件的代码详解
2019/05/21 Python
python判断所输入的任意一个正整数是否为素数的两种方法
2019/06/27 Python
python3实现从kafka获取数据,并解析为json格式,写入到mysql中
2019/12/23 Python
Python 实现日志同时输出到屏幕和文件
2020/02/19 Python
HTML5中的进度条progress元素简介及兼容性处理
2016/06/02 HTML / CSS
详解Canvas实用库Fabric.js使用手册
2019/01/07 HTML / CSS
印尼最大的在线购物网站:MatahariMall.com
2016/08/26 全球购物
Topshop法国官网:英国快速时尚品牌
2018/04/08 全球购物
C#中有没有静态构造函数,如果有是做什么用的?
2016/06/04 面试题
大学生关于奋斗的演讲稿
2014/01/09 职场文书
2014年教师政治学习材料
2014/06/02 职场文书
企业党建工作汇报材料
2014/08/19 职场文书
小学语文教师年度考核个人总结
2015/02/05 职场文书
未婚证明格式
2015/06/15 职场文书