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;
    }
 
}

时间: 2024-10-08 00:21:30

php短信发送的相关文章

短信发送接口被恶意访问的网络攻击事件(二)肉搏战-阻止恶意请求

图形验证码+ip(用户id)+https http://www.cnblogs.com/han-1034683568/p/7040417.html 前言 承接前文<短信发送接口被恶意访问的网络攻击事件(一)紧张的遭遇战险胜>,在解决了短信发送的问题后,长长地舒了口气,也就各忙各的事情去了,本以为应该是个完美的收场,哪知道只是泥泞道路的前一段,收场是收不了了,还是要去应付接下来的烂摊子,因为攻击者并没有停止攻击,虽然恶意请求已经可以被识别并且不会被业务服务器处理,也不会去触发短信发送接口,但是请

destoon 短信发送函数及短信接口修改

// $DT在common.inc.php中定义, $CACHE = cache_read('module.php'); $DT = $CACHE['dt'];  从缓存里读取网站配置信息. //$db 数据库类,$DT 全局配置,$DT['sms'] 开启手机短信,$DT_TIME系统时间,$DT_IP 当前ip地址,$_username当前用户 //DT_CLOUD_UID  DT_CLOUD_KEY 在common.inc.php 中定义 //define('DT_CLOUD_UID',

C# 编写短信发送Window服务

我们做项目过程中,一般都会有发送短信的需求.最常见的就是户注册或者登录时发送短信验证码.不同类型的短信发送,我们都可以放到到一张短信表中,然后通过一个定时的作业去执行短信发送.而定时作业的执行,我们就可以通过于Window服务去实现.(本篇只说window服务,具体实现短信发送的可以参考博客:http://www.cnblogs.com/ywl925/archive/2012/11/24/2786105.html) 1.首先我们创建一张短信内容表: 1 CREATE TABLE [dbo].[M

快递点短信发送软件

快递点短信发送软件 用户群体:固定快递点,如学校.禁止进入区域.小区集中区.高校网点,不让快递员进入的单位,有固定的店铺.每日快件量都在几百以上.特别是取货时间集中的高校网点,短信通知过后学生都是放学时间来取件,人多,排长队.按照传统方式,最少得三四个人负责取件,而且半天找不到,工作效率低,工作人员一天下来口干舌燥的.如果到了高峰期如双十一,货量之大往往令网点老板崩溃.使用本软件之后,能大大提高作业效率,只要足够货架把货分类好,一个人能管理一千件左右.不但能节约人力成本,而且节省时间,不用顾客等

短信发送接收装置

接到Boss的命令,要求我们做一个在Android手机上运行的小的例子,实现的功能是:通过一个手机向另外一个手机发送数据,另外一个Android手机接收到后通过USB接口输出! 该装置主要由三个步骤组成: 1.发信息 2.接收信息并读取信息内容 3.从 USB 口输出(这里暂时没实现) 就是为了实现一个短信发送,并接收短信内容输出的装置 MainActivity.java 类实现的是发送信息的功能 1 package com.example.android_phone; 2 3 import j

pyhthon 利用爬虫结合阿里大于短信接口实现短信发送天气预报

1 # -*- coding: utf-8 -*- 2 ''''' 3 SDK for alidayu 4 5 requires: python3.x, requests 6 7 @author: [email protected] 8 requests 打包出错故替换成urllib库 9 ''' 10 11 #import requests 12 import urllib.request 13 import urllib.parse 14 import hashlib 15 from tim

SMS短信发送

---恢复内容开始--- http://sms.webchinese.cn/default.shtml 中国网建SMS短信发送平台. 利用该平台提供的API接口. 实现短信发送. 嗯...就是看该平台提供的API文档然后根据自己需求修改. http://sms.webchinese.cn/api.shtml  //api文档地址 package com.bnuz.xu; import java.io.IOException; import java.io.UnsupportedEncodingE

Java中实现短信发送

最近跟着做公司的项目偶然接触到的,顺势把这个给记录下来,给自己梳理一下. 采用引入第三方工具的方式,网上查了半天,发现简单的实现方式便是注册一个中国网建的账号,新建账号的时候会附带赠几条免费短信,彩信 ,之后想要在使用就得花钱了.简单的操作流程如下. 网建的链接如下: http://www.smschinese.cn/api.shtml 手机号注册登陆成功之后页面如下: 如上页面可以看到我们之前发送的短息信息以及相关的剩余短信条数. 我们可以参考它那边提供的API接口文档,接入jar包,利用自己

远程短信发送功能

远程短信发送功能 拓波短信服务器(Smsserver)用于支持Turbomail 邮件服务器进行远程发送短信,当邮件服务器和短信猫分别 部署在不同的机器上,邮件服务器就需要通过短信服务器进行短信发送. 安装配置短信服务器(Smsserver)步骤: 安装短信服务器. Windows 安装方法: 解压 smsserver.zip 到C:或D:根目录即完成安装. Linux 安装方法: 执行 tar –vzxf smsserver.tgz 解压 smsserver.tgz 到根目录即完成安装. 配置

阿里大鱼短信发送接口开发

一. API接口介绍 alibaba.aliqin.fc.sms.num.send (短信发送) 向指定手机号码发送模板短信,模板内可设置部分变量.使用前需要在阿里大于管理中心添加短信签名与短信模板.测试时请直接使用正式环境HTTP请求地址. [重要]批量发送(一次传递多个号码eg:1381111111,1382222222)会产生相应的延迟,触达时间要求高的建议单条发送 公共参数 请求地址: 环境 HTTP请求地址 HTTPS请求地址 正式环境 http://gw.api.taobao.com