欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

php实现短信发送代码

程序员文章站 2022-05-20 09:34:43
卓望的短信发送。php格式。都要不习惯用xml传输数据格式了 标签: <无> 1. [代码][php]代码    ...

卓望的短信发送。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;
  }
 
}

以上所述就是本文的全部内容了,希望大家能够喜欢。