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 相关文章推荐
一个可查询所有表的“通用”查询分页类
Oct 09 PHP
PHP禁止页面缓存的代码
Oct 23 PHP
PHP 基于文件头的文件类型验证类函数
May 01 PHP
php对数组排序代码分享
Feb 24 PHP
php结合js实现点击超链接执行删除确认操作
Oct 31 PHP
php实现当前页面点击下载文件的简单方法
Sep 22 PHP
PHP实现对xml的增删改查操作案例分析
May 19 PHP
php获取手机端的号码以及ip地址实例代码
Sep 12 PHP
php获取目录下所有文件及目录(多种方法)(推荐)
May 14 PHP
php+jQuery ajax实现的实时刷新显示数据功能示例
Sep 12 PHP
laravel清除视图缓存的代码
Oct 23 PHP
Laravel中获取IP的真实地理位置
Apr 01 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作的文本留言本的例子(三)
2006/10/09 PHP
解决控件遮挡问题:关于有窗口元素和无窗口元素
2007/01/28 PHP
PHP采集类snoopy详细介绍(snoopy使用教程)
2014/06/19 PHP
JavaScript delete操作符应用实例
2009/01/13 Javascript
jquery中常用的SET和GET
2009/01/13 Javascript
Javascript 变量作用域 两个可能会被忽略的小特性
2010/03/23 Javascript
jQuery让控件左右移动的三种实现方法
2013/09/08 Javascript
引入JS文件IE6报语法错误或缺少对象问题的解决方法
2014/01/09 Javascript
jquery实现右键菜单插件
2015/03/29 Javascript
Jquery网页内滑动缓冲导航的实现代码
2015/04/05 Javascript
js遍历map javaScript遍历map的简单实现
2016/08/26 Javascript
javaScript语法总结
2016/11/25 Javascript
jQuery常见的遍历DOM操作详解
2018/09/05 jQuery
vue-cli webpack 引入swiper的操作方法
2018/09/15 Javascript
从组件封装看Vue的作用域插槽的实现
2019/02/12 Javascript
js前端如何写一个精确的倒计时代码
2019/10/25 Javascript
jquery ajax 请求小技巧实例分析
2019/11/11 jQuery
JS实现音量控制拖动
2020/01/15 Javascript
[00:47]DOTA2荣耀之路6:天火,天火!
2018/05/30 DOTA
[01:02:09]Liquid vs TNC 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21
2020/07/19 DOTA
Django查询数据库的性能优化示例代码
2017/09/24 Python
PyTorch 对应点相乘、矩阵相乘实例
2019/12/27 Python
Python ellipsis 的用法详解
2020/11/20 Python
利用CSS3的transition属性实现滑动效果
2015/08/05 HTML / CSS
HTML5 script元素async、defer异步加载使用介绍
2013/08/23 HTML / CSS
求∏的近似值,直到最后一项的绝对值小于指定的数
2016/02/12 面试题
C#如何调用Word并打开一个Word文档
2013/05/08 面试题
长青弘远的面试题
2012/06/09 面试题
非功能性需求都包括哪些方面
2013/10/29 面试题
运动会入场解说词300字
2014/01/25 职场文书
群众路线教育实践活动的心得体会
2014/09/03 职场文书
乡村教师党员四风问题对照检查材料思想汇报
2014/10/08 职场文书
2014年机关作风建设工作总结
2014/10/23 职场文书
学习十八届四中全会依法治国心得体会
2014/11/03 职场文书
就业意向协议书
2015/01/29 职场文书
如何用Node.js编写内存效率高的应用程序
2021/04/30 Javascript