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你的验证码安全码?
Jan 02 PHP
php 什么是PEAR?(第三篇)
Mar 19 PHP
一个简单的php加密解密函数(动态加密)
Jun 19 PHP
Linux中用PHP判断程序运行状态的2个方法
May 04 PHP
PHP实现AES256加密算法实例
Sep 22 PHP
php动态生成缩略图并输出显示的方法
Apr 20 PHP
PHP+MySQL实现的简单投票系统实例
Feb 24 PHP
浅谈socket同步和异步、阻塞和非阻塞、I/O模型
Dec 15 PHP
PHP简单实现遍历目录下特定文件的方法小结
May 22 PHP
php mysql数据库操作类(实例讲解)
Aug 06 PHP
thinkPHP5实现数据库添加内容的方法
Oct 25 PHP
php传值和传引用的区别点总结
Nov 19 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-perl哈希算法实现(times33哈希算法)
2013/12/30 PHP
PHP中使用TCPDF生成PDF文档实例
2014/07/01 PHP
ThinkPHP实现多数据库连接的解决方法
2014/07/01 PHP
PHP遍历文件夹与文件类及处理类用法实例
2014/09/23 PHP
PHP读取txt文本文件并分页显示的方法
2015/03/11 PHP
PHP中的switch语句的用法实例详解
2015/10/21 PHP
thinkPHP订单数字提醒功能的实现方法
2016/12/01 PHP
PHP 中 var_export、print_r、var_dump 调试中的区别
2018/06/19 PHP
PHP等比例压缩图片的实例代码
2018/07/26 PHP
laravel自定义分页的实现案例offset()和limit()
2019/10/15 PHP
Convert Seconds To Hours
2007/06/16 Javascript
JavaScript Konami Code 实现代码
2009/07/29 Javascript
JavaScript入门之基本函数详解
2011/10/21 Javascript
JS简单实现文件上传实例代码(无需插件)
2013/11/15 Javascript
jquery中append()与appendto()用法分析
2014/11/14 Javascript
了不起的node.js读书笔记之例程分析
2014/12/22 Javascript
JavaScript实现级联菜单的方法
2015/06/29 Javascript
学习Angularjs分页指令
2016/07/01 Javascript
AngularJS指令详解及示例代码
2016/08/16 Javascript
Jquery Easyui搜索框组件SearchBox使用详解(19)
2016/12/17 Javascript
Vue关于数据绑定出错解决办法
2017/05/15 Javascript
vue 做移动端微信公众号采坑经验记录
2018/04/26 Javascript
JavaScript事件对象event用法分析
2018/07/27 Javascript
解决layui前端框架 form表单,table表等内置控件不显示的问题
2018/08/19 Javascript
vue中使用protobuf的过程记录
2018/10/26 Javascript
Python实现的网页截图功能【PyQt4与selenium组件】
2018/07/12 Python
使用pyecharts1.7进行简单的可视化大全
2020/05/17 Python
如何在python中实现线性回归
2020/08/10 Python
html5中audio支持音频格式的解决方法
2018/08/24 HTML / CSS
美国婴儿和儿童家具网上商店:ABaby.com
2018/07/02 全球购物
SQL面试题
2013/12/09 面试题
通用自荐信范文
2014/03/14 职场文书
企业趣味活动方案
2014/08/21 职场文书
2014年度思想工作总结
2014/11/27 职场文书
幼儿园个人总结
2015/02/28 职场文书
Java Optional<Foo>转换成List<Bar>的实例方法
2021/06/20 Java/Android