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极大的增强功能和性能
Oct 09 PHP
一个简单的域名注册情况查询程序
Oct 09 PHP
source.php查看源文件
Dec 09 PHP
php include的妙用,实现路径加密
Jul 29 PHP
MySQL连接数超过限制的解决方法
Jul 17 PHP
php使用Jpgraph绘制复杂X-Y坐标图的方法
Jun 10 PHP
PHP编写RESTful接口
Feb 23 PHP
Windows Server 2008 R2和2012中PHP连接MySQL过慢的解决方法
Jul 02 PHP
深入理解PHP JSON数组与对象
Jul 19 PHP
php 常用的系统函数
Feb 07 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
Nov 17 PHP
PHP获取当前系统时间的方法小结
Oct 03 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
上海无线电三厂简史修改版
2021/03/01 无线电
PHP 开发环境配置(Zend Studio)
2010/04/28 PHP
PHP 魔术函数使用说明
2010/05/14 PHP
关于PHP中Object对象的笔记分享
2011/06/28 PHP
zend optimizer在wamp的基础上安装图文教程
2013/10/26 PHP
discuz加密解密函数使用方法和中文注释
2014/01/21 PHP
ThinkPHP CURD方法之field方法详解
2014/06/18 PHP
php获取远程文件的内容和大小
2015/11/03 PHP
Laravel中9个不经常用的小技巧汇总
2019/04/16 PHP
解决thinkphp5未定义变量会抛出异常,页面错误,请稍后再试的问题
2019/10/16 PHP
javascript面向对象的方式实现的弹出层效果代码
2010/01/28 Javascript
JS 实现 ajax 异步浏览器兼容问题
2017/01/21 Javascript
解决vue props 拿不到值的问题
2018/09/11 Javascript
浅谈让你的代码更简短,更整洁,更易读的ES6小技巧
2018/10/25 Javascript
仿iPhone通讯录制作小程序自定义选择组件的实现
2019/05/23 Javascript
使用flow来规范javascript的变量类型
2019/09/12 Javascript
python脚本实现分析dns日志并对受访域名排行
2014/09/18 Python
Python简单删除目录下文件以及文件夹的方法
2015/05/27 Python
Python 模拟员工信息数据库操作的实例
2017/10/23 Python
python实现爬取图书封面
2018/07/05 Python
关于Pycharm无法debug问题的总结
2019/01/19 Python
Python3.7基于hashlib和Crypto实现加签验签功能(实例代码)
2019/12/04 Python
python+opencv边缘提取与各函数参数解析
2020/03/09 Python
python os模块常用的29种方法使用详解
2020/06/02 Python
django 获取字段最大值,最新的记录操作
2020/08/09 Python
Python + opencv对拍照得到的图片进行背景去除的实现方法
2020/11/18 Python
Lookfantastic香港官网:英国知名美妆购物网站
2018/06/19 全球购物
英国在线女鞋目的地:SIMMI
2018/12/27 全球购物
高级Java程序员面试题
2016/06/23 面试题
小学生防溺水广播稿
2014/01/12 职场文书
协议书的格式
2014/04/23 职场文书
商场开业庆典策划方案
2014/06/02 职场文书
三方股东合作协议书范本
2014/09/28 职场文书
工伤认定行政答辩状
2015/05/22 职场文书
Canvas三种动态画圆实现方法说明(小结)
2021/04/16 Javascript
7个关于Python的经典基础案例
2021/11/07 Python