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 相关文章推荐
Phpbean路由转发的php代码
Jan 10 PHP
php下关于中英数字混排的字符串分割问题
Apr 06 PHP
PHP学习笔记之数组篇
Jun 28 PHP
根据中文裁减字符串函数的php代码
Dec 03 PHP
php实现将字符串按照指定距离进行分割的方法
Mar 14 PHP
PHP中应该避免使用同名变量(拆分临时变量)
Apr 03 PHP
PHP学习笔记(三):数据类型转换与常量介绍
Apr 17 PHP
php实现PDO中捕获SQL语句错误的方法
Feb 16 PHP
CI框架(CodeIgniter)操作redis的方法详解
Jan 25 PHP
php实现websocket实时消息推送
Mar 30 PHP
php7函数,声明,返回值等新特性介绍
May 25 PHP
laravel 多图上传及图片的存储例子
Oct 14 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
火车采集器 免费版使出收费版本功能实现原理
2009/09/17 PHP
叫你如何修改Nginx与PHP的文件上传大小限制
2014/09/10 PHP
WordPress开发中短代码的实现及相关函数使用技巧
2016/01/05 PHP
PHP 将dataurl转成图片image方法总结
2016/10/14 PHP
Javascript实现重力弹跳拖拽运动效果示例
2013/06/28 Javascript
JavaScript中为什么null==0为false而null大于=0为true(个人研究)
2013/09/16 Javascript
jQuery中prev()方法用法实例
2015/01/08 Javascript
详解JavaScript操作HTML DOM的基本方式
2015/10/21 Javascript
JavaScript中使用sencha gridpanel 编辑单元格、改变单元格颜色
2015/11/26 Javascript
模仿password输入框的实现代码
2016/06/07 Javascript
JavaScript实现点击文本自动定位到下拉框选中操作
2016/06/15 Javascript
Bootstrap table的使用方法
2016/11/02 Javascript
nodejs服务搭建教程 nodejs访问本地站点文件
2017/04/07 NodeJs
微信小程序 图片上传实例详解
2017/05/05 Javascript
Vue computed计算属性的使用方法
2017/07/14 Javascript
Node.js上传文件功能之服务端如何获取文件上传进度
2018/02/05 Javascript
Vue-cli3多页面配置详解
2020/03/22 Javascript
Vue实现点击导航栏当前标签后变色功能
2020/08/19 Javascript
打开电脑上的QQ的python代码
2013/02/10 Python
python基础教程之获取本机ip数据包示例
2014/02/10 Python
Python中的列表知识点汇总
2015/04/14 Python
python 容器总结整理
2017/04/04 Python
使用Python读取安卓手机的屏幕分辨率方法
2018/03/31 Python
将字典转换为DataFrame并进行频次统计的方法
2018/04/08 Python
pycharm 实现显示project 选项卡的方法
2019/01/17 Python
Python这样操作能存储100多万行的xlsx文件
2019/04/16 Python
提高python代码运行效率的一些建议
2020/09/29 Python
python中scrapy处理项目数据的实例分析
2020/11/22 Python
软件测试有哪些?什么是配置项?
2012/02/12 面试题
护士毕业生自我鉴定
2014/02/08 职场文书
任命书格式
2014/06/05 职场文书
政府个人对照检查材料
2014/08/28 职场文书
幼儿园圣诞节活动总结
2015/05/06 职场文书
保险公司岗前培训工作总结
2015/10/24 职场文书
年终奖金发放管理制度,中小企业适用,拿去救急吧!
2019/07/12 职场文书
js Proxy的原理详解
2021/05/25 Javascript