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 相关文章推荐
JAVA/JSP学习系列之七
Oct 09 PHP
discuz安全提问算法
Jun 06 PHP
coreseek 搜索英文的问题详解
Jun 08 PHP
php断点续传之如何分割合并文件
Mar 22 PHP
FastCGI 进程意外退出造成500错误
Jul 26 PHP
使用PHPCMS搭建wap手机网站
Sep 20 PHP
php获取远程文件大小
Oct 20 PHP
CI映射(加载)数据到view层的方法
Mar 28 PHP
nginx下安装php7+php5
Jul 31 PHP
Laravel中9个不经常用的小技巧汇总
Apr 16 PHP
php+laravel依赖注入知识点总结
Nov 04 PHP
Laravel 集成微信用户登录和绑定的实现
Dec 27 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
PHP4中session登录页面的应用
2008/07/25 PHP
PHP iconv 解决utf-8和gb2312编码转换问题
2010/04/12 PHP
PHP容易忘记的知识点分享
2013/04/30 PHP
php修改NetBeans默认字体的大小
2013/07/02 PHP
php 获取SWF动画截图示例代码
2014/02/10 PHP
windows7下php开发环境搭建图文教程
2015/01/06 PHP
php生成0~1随机小数的方法(必看)
2017/04/05 PHP
PHP高精确度运算BC函数库实例详解
2017/08/15 PHP
php自定义排序uasort函数示例【二维数组按指定键值排序】
2019/06/19 PHP
php并发加锁问题分析与设计代码实例讲解
2021/02/26 PHP
基于JavaScript实现鼠标悬浮弹出跟随鼠标移动的带箭头的信息层
2016/01/18 Javascript
window.onload绑定多个事件的两种解决方案
2016/05/15 Javascript
jQuery下拉框的简单应用
2016/06/24 Javascript
详解用Node.js实现Restful风格webservice
2017/09/29 Javascript
JavaScript实现构造json数组的方法分析
2018/08/17 Javascript
如何基于vue-cli3.0构建功能完善的移动端架子
2019/04/24 Javascript
判断js数据类型的函数实例详解
2019/05/23 Javascript
redux.js详解及基本使用
2019/05/24 Javascript
[01:12](回顾)DOTA2国际邀请赛,全世界DOTAer的盛宴
2014/07/01 DOTA
[05:14]辉夜杯主赛事第二日 RECAP精彩回顾
2015/12/27 DOTA
python入门基础之用户输入与模块初认识
2016/11/14 Python
python递归下载文件夹下所有文件
2019/08/31 Python
详解Python绘图Turtle库
2019/10/12 Python
如何使用python进行pdf文件分割
2019/11/11 Python
python主线程与子线程的结束顺序实例解析
2019/12/17 Python
一文读懂Python 枚举
2020/08/25 Python
pycharm使用技巧之自动调整代码格式总结
2020/11/04 Python
继承权公证书
2014/04/09 职场文书
购房协议书
2014/04/11 职场文书
自我工作评价范文
2015/03/06 职场文书
上课迟到检讨书
2015/05/06 职场文书
山楂树之恋观后感
2015/06/11 职场文书
教你怎么用Python selenium操作浏览器对象的基础API
2021/06/23 Python
vue+element ui实现锚点定位
2021/06/29 Vue.js
css filter和getUserMedia的联合使用
2022/02/24 HTML / CSS
ubuntu端向日葵键盘输入卡顿问题及解决
2022/12/24 Servers