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的String类代码
Apr 20 PHP
Php获取金书网的书名的实现代码
Jun 11 PHP
解决文件名解压后乱码的问题 将文件名进行转码的代码
Jan 10 PHP
使用PHP计算两个路径的相对路径
Jun 14 PHP
如何在Ubuntu下启动Apache的Rewrite功能
Jul 05 PHP
curl不使用文件存取cookie php使用curl获取cookie示例
Jan 26 PHP
递归删除一个节点以及该节点下的所有节点示例
Mar 19 PHP
php求两个目录的相对路径示例(php获取相对路径)
Mar 27 PHP
smarty模板引擎中变量及变量修饰器用法实例
Jan 22 PHP
Nginx下配置codeigniter框架方法
Apr 07 PHP
PHP编程之设置apache虚拟目录
Jul 08 PHP
PHP常用的三种设计模式汇总
Aug 28 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实现mysql数据库连接操作及用户管理
2015/11/08 PHP
PHP中使用foreach()遍历二维数组的简单实例
2016/06/13 PHP
Yii针对添加行的增删改查操作示例
2016/10/18 PHP
Jquery知识点二 jquery下对数组的操作
2011/01/15 Javascript
用js来定义浏览器中一个左右浮动元素相对于页面主体宽度的位置的函数
2012/01/21 Javascript
javascript针对DOM的应用实例(一)
2012/04/15 Javascript
JS 各种网页尺寸判断实例方法
2013/04/18 Javascript
js添加select下默认的option的value和text的方法
2014/10/19 Javascript
JavaScript将当前时间转换成UTC标准时间的方法
2015/04/06 Javascript
适用于javascript开发者的Processing.js入门教程
2016/02/24 Javascript
jQuery实现点击表格单元格就可以编辑内容的方法【测试可用】
2016/08/01 Javascript
JS简单实现无缝滚动效果实例
2016/08/24 Javascript
AngularJS操作键值对象类似java的hashmap(填坑小结)
2016/11/12 Javascript
AngularJs用户登录问题处理(交互及验证、阻止FQ处理)
2017/10/26 Javascript
使用mixins实现elementUI表单全局验证的解决方法
2019/04/02 Javascript
微信小程序页面间传值与页面取值操作实例分析
2019/04/30 Javascript
小程序实现悬浮搜索框
2019/07/12 Javascript
Element Popover 弹出框的使用示例
2020/07/26 Javascript
vue监听键盘事件的相关总结
2021/01/29 Vue.js
python实现折半查找和归并排序算法
2017/04/14 Python
python hashlib加密实现代码
2019/10/17 Python
基于python+selenium的二次封装的实现
2020/01/06 Python
keras实现theano和tensorflow训练的模型相互转换
2020/06/19 Python
Pycharm自带Git实现版本管理的方法步骤
2020/09/18 Python
Python中生成ndarray实例讲解
2021/02/22 Python
澳大利亚Rockwear官网:女子瑜伽、健身和运动服
2021/01/26 全球购物
师范毕业生个人求职信
2013/12/09 职场文书
元旦晚会策划方案
2014/02/18 职场文书
电大毕业个人生自我鉴定
2014/03/26 职场文书
项目建议书范文
2014/05/12 职场文书
师德师风自我评价范文
2014/09/11 职场文书
2015年销售人员工作总结
2015/04/07 职场文书
幼儿园家长反馈意见
2015/06/03 职场文书
《童年》读后感(三篇)
2019/08/27 职场文书
使用这 6个Vue加载动画库来减少我们网站的跳出率
2021/05/18 Vue.js
Javascript 解构赋值详情
2021/11/17 Javascript