PHP短信群发

群发短信记录

导入excel文件
在这里插入图片描述
导入样式在这里插入图片描述HTML js代码

<script>
    $(document).ready(function(){
        $("#sendsms").click(function(){
            var res = confirm("确定发送短信");
            if(res == true)
            {
                sendsms();
            }

        });
        // 导入excel文件
         $("#exampleInputFile").change(function(){  // 当 id 为 file 的对象发生变化时
            var fileSize = this.files[0].size;
            var size = fileSize / 1024 / 1024;
            if (size > 5) {
                alert("附件不能大于5M,请将文件压缩后重新上传!");
                this.value="";
                return false;
            }else{
                $("#showPath").val($("#exampleInputFile").val());  //将 #file 的值赋给 #file_name
            }
        })
        $('#sendtime').datetimepicker({
            format:"Y-m-d H:i:s",
        });
        $.datetimepicker.setLocale('ch');
    });
    
    //插入Excel列方法
    (function($){
        $.fn.extend({
            insertAtCaret: function(myValue){
                var $t=$(this)[0];
                if (document.selection) {
                    this.focus();
                    sel = document.selection.createRange();
                    sel.text = myValue;
                    this.focus();
                }
                else
                    if ($t.selectionStart || $t.selectionStart == '0') {
                        var startPos = $t.selectionStart;
                        var endPos = $t.selectionEnd;
                        var scrollTop = $t.scrollTop;
                        $t.value = $t.value.substring(0, startPos) + myValue + $t.value.substring(endPos, $t.value.length);
                        this.focus();
                        $t.selectionStart = startPos + myValue.length;
                        $t.selectionEnd = startPos + myValue.length;
                        $t.scrollTop = scrollTop;
                    }
                    else {
                        this.value += myValue;
                        this.focus();
                    }
                }
        })
        
    })(jQuery)

    $('#cha').click(function(){
        var str = '{'+$('#spec').val()+'}';
            $('#charu').insertAtCaret(str);
    });

	//发送定制短信
    function sendsms(){
        // alert('adf');
        var phonestr = $('.phone').val();
        var content = $('.content').val();
        var sendtime = $('#sendtime').val();
        $.ajax({
            url: "http://"+document.domain+"/index.php/Admin/Lianxi/dinzhi_post", //请求的url地址
            dataType: "json", //返回格式为json
            data: {
                phonestr:phonestr,
                content:content,
                sendtime:sendtime,
            },
            type: "post", //请求方式
            success: function (req) {
                console.log(req);
                // console.log(req[0].message);
                var strf = '';
                var num = 0;
                //请求成功时处理
                if(req.length !=0){
                    for(var i=1;i<=req.length;i++){
                         strf += '第'+i+'条:'+req[num].message+';';
                            num++;
                    }
                    $('#fanhui').val(strf); 
                }
            },
            error: function () {
                alert('网络错误');
            }
        });
    }

	//查询余额
     $("#balance").click(function (){

        $.ajax({
            url:"http://"+document.domain+"/index.php/Admin/Lianxi/balance_post",
            dataType:"json",
            success:function (req){
                // console.log(req.message);
                if(JSON.stringify(req.message) == "{}"){
                    var str = "查询成功  "+"支付方式:"+req.payinfo+"  余额:"+req.overage+"条  总充值点数:"+req.sendTotal+'条';
                    $("#fanhui").val(str);
                }else{
                    $("#fanhui").val(req.message);
                }
            }
        });
    });

</script>

PHP代码

 	//短信接口
    public function group_sms($post_data,$url){
        $o='';
        foreach ($post_data as $k=>$v)
        {
           $o.="$k=".$v.'&';
        }
        $post_data=substr($o,0,-1);
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_URL,$url);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //如果需要将结果直接返回到变量里,那加上这句。
        $postObj = simplexml_load_string(curl_exec($ch), 'SimpleXMLElement', LIBXML_NOCDATA);
        $jsonStr = json_encode($postObj);
        return $jsonStr;
    }


    // 导入定制短信信息
    public function dinzhisms(){
        $phones = I('phones');
        $content = I('content');
        if($content != ''){
            $strSubject = $content;
            $strPattern = "/(?<={)[^}]+/";
            $arrMatches = [];
            preg_match_all($strPattern, $strSubject, $arrMatches);
            $arr = $arrMatches[0];
        }
        
        import("Org.Util.PHPExcel");
        import("Org.Util.PHPExcel.Writer.Excel5");
        import("Org.Util.PHPExcel.IOFactory.php");
        ini_set('memory_limit','1024M');
        $id=1;
        if (!empty($_FILES)) {
            $config = array(
                'exts' => array('xlsx','xls'),
                'maxSize' => 3145728000,
                'rootPath' =>"./Public/",
                'savePath' => 'Uploads/',
                'subName' => array('date','Ymd'),
            );
            $upload = new \Think\Upload($config);
            if (!$info = $upload->upload()) {
                $this->error($upload->getError());
            }

            $file_name=$upload->rootPath.$info['photo']['savepath'].$info['photo']['savename'];
            $extension = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));//判断导入表格后缀格式
            if ($extension == 'xlsx') {
                $objReader =\PHPExcel_IOFactory::createReader('Excel2007');
                $objPHPExcel =$objReader->load($file_name, $encode = 'utf-8');
            } else if ($extension == 'xls'){
                $objReader =\PHPExcel_IOFactory::createReader('Excel5');
                $objPHPExcel =$objReader->load($file_name, $encode = 'utf-8');
            }
            $sheet =$objPHPExcel->getSheet(0);
            $highestRow = $sheet->getHighestRow();//取得总行数
            $highestColumn =$sheet->getHighestColumn(); //取得总列数
            $list=array();
            
            for ($i = 3; $i <= $highestRow; $i++) {
                //读取的$phones.$i表坐标
                $phone_temp[$i] = trim($objPHPExcel->getActiveSheet()->getCell($phones.$i)->getValue());
                if($phone_temp[$i] != ''){
                    foreach($arr as $k => $v){
                        $address=$v.$i;
                        $cell = $objPHPExcel->getActiveSheet()->getCell($address);
                        $cvalue = $cell->getValue();
                        if($cell->getDataType()==\PHPExcel_Cell_DataType::TYPE_NUMERIC){
                            $cellstyleformat = $cell->getStyle($cell->getCoordinate())->getNumberFormat();
                            $formatcode = $cellstyleformat->getFormatCode();
                            //判断时间类型
                            if (preg_match('/^(\[\$[A-Z]*-[0-9A-F]*\])*[hmsdy]/i', $formatcode)) {
                                $data[$v] = gmdate("Y-m-d H:i:s", \PHPExcel_Shared_Date::ExcelToPHP($cvalue));
                            }else{
                                $data[$v] = $cvalue;
                            }
                            
                        }else{
                            $data[$v] = $objPHPExcel->getActiveSheet()->getCell($v.$i)->getValue();
                        }
                        $list[$i] = $data;
                    }
                }
            }
            $phonelist = array_filter($phone_temp);
            $phonestr = implode(',',$phonelist);
            $this->assign('phonestr',$phonestr);
            
            foreach($arr as $k => $v){
                $specs[$k] = '{'.$v.'}';
            }
            foreach($phonelist as $k => $v){
                $contentlist[$k] = '【金宝缘】'.trim(str_replace($specs,$list[$k], $content));
                $strlen += ceil(mb_strlen($contentlist[$k])/67);
            }
            $contentstr = implode(',',$contentlist);
            $this->assign('contentstr',$contentstr);

            $lena = count($list);
            $zongphone = '共计号码'.count($phonelist).'个;计费条数'.$strlen.'条';
            $this->assign('zongphone',$zongphone);
            $this->assign('lena',$lena);

            $this->assign('list',$contentlist);
        }
        $arr = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');
        $this->assign('arr',$arr);
        $len = count($arr);
        $this->assign('len',$len);

        $this->display();
    }

    //发送定制短信
    public function dinzhi_post(){
        if(!empty(I('phonestr'))){
            $phonestr = I('phonestr');
        }

        $phones = explode(',',$phonestr);

        if(!empty(I('content'))){
            $content = I('content');
        }
        $contents = explode(',',$content);
        if(!empty(I('sendtime'))){
            $sendtime = I('sendtime');
        }

        $post_data = array();
        $post_data['userid'] = 1425;
        $post_data['timestamp'] = date('YmdHis');
        $post_data['sign'] = MD5('jrcs123456'.date('YmdHis'));
        $post_data['sendTime'] = $sendtime; //不定时发送,值为0,定时发送,输入格式YYYYMMDDHHmmss的日期值
        $post_data['extno'] = '';
        
        $url='http://60.205.151.174:8888/v2sms.aspx?action=send';
        foreach($phones as $k => $v){
            $post_data['mobile'] = trim($v);
            $post_data['content'] = trim($contents[$k]);
            $res[$k] = json_decode($this->group_sms($post_data,$url));
        }
        echo json_encode($res);
    }
彩翼通WEB短信平台基于C#3.5 + MSSQL2005 R2平台开发,前端采用jQuery1.4.1 + DIV +CSS展示,系统CS源码采用3层架构(数据层+逻辑层+表现层),系统采用存储过程的设计,方便改动及二次开发。 1、【彩翼通短信平台系统】具有以下特点: 1)采用3层安全认证机制,安全性超强。一层:用户授权访问;二层:动态安全码、用户ID和用户角色MD5加密验证机制,防止用户篡改COOKIE,每个页面进行用户权限验证;三层:系统统一过滤危险SQL代码,防止注入式攻击。 2)管理员后台配置短信接口,动态获取短信接口余额,可以设置当前默认短信发送接口,多个短信接口灵活切换。绝大多数接口通过直接进行配置就能使用。支持HTTP的GET、POST接口配置。支持爱迪生数据库接口。 3)系统基于系统管理员,代理商和最终客户的商业模式。支持无限极代理 4)群发短信时系统自动扣量,设置起始扣量号码数及扣量比例。 5)人工审核发送功能,系统可以设置用户是否需要审核发送,超过起始号码数的会自动拦截,并短信提醒管理员客户已提交群发短信,由管理员通过系统自动发送或通过卡发设备(短信猫)发送。 6)智能白名单功能,管理员可以设置每个客户的白名单号码,设置的白名单号码不会参与扣量(白名单号码为客户可能用来测试群发的手机号码)。用户发送号码少于5个、自动进入白名单。 7)财务管理功能,管理员充值和群发短信消费一目了然,财务统计功能。在线充值功能. 8)常用群发簿和个性短信息管理功能。方便客户管理、维护短信。 9)接口容错报警功能,短信接口异常,系统自动发送错误日志,短信接口余额不足系统自动短信通知管理员。 10)系统公告功能,管理员可以指定发送给代理商、客户或全部。 11)对外API接口,支持10万号码一次性提交。 12)号码分流:设置移动、联通和电信通道,不同的运营号码自动分流发送。(多通道版支持) 13)长短信功能:支持500个字短信,系统自动拆分多条发送。 14)强大稳定的后台服务器端发送短信程序,支持多线程,详细发送日志,错误报警。 15)自动+手动批量清理数据功能。 2、【彩翼通短信平台系统】其它特色功能 1、卡发短信回复功能,管理员后台增加回复,客户在后台可以看到回复短信 2、扩展扣量,扣量规则分为按比例扣量和最高发送短信数量,可针对每个客户设置不同的扣量规则 3、重新定义短信接口,准确获取短信接口余额,满足90%短信接口直接在后台配置就能使用。 4、通讯录管理,支持批量上传。 5、提供对外webservice、http接口支持,支持10万号码! 6、优化短信发送。 7、系统操作日志记录 8、直接在页面上设置系统参数 9、重新定义审核流程为:审核—发送—生成报告。 10、重新定义报告生成流程,大大提高报告的生成效率和真实程度。 11、升级服务端软件,记录错误日志,提供容错能力。 12、记录错误日志 13、限制一个账号只能同时在一台电脑登录 14、全部重构服务端软件,发送短信效率大大增加 主要功能: 1.自定义网关接口. 2.移动,联通,电信,小灵通,白名单号码。各自使用一个单独的接口。(需要接受系统支持) 3.可以设置10条以下自动发送,10条以上审核后发送。(需要接受系统支持) 4.可以设置在需要审核的时候,有短信通知,通知您审核短信。 5.可以定时发送短信。(需要接受系统支持) 6.可以让用户通过快钱支付,直接在网上通过网上银行支付。 7.自动过滤非法字符,让客户在发送短信之前就过滤非法字符。 8.无限级开代理商账号。代理商可以再开代理商账号。 9.用户自己可以给公司内部其他用户在线划账。 10.通讯录通过Excel文件导入\导出功能。 11.提供接口给用户或是代理商使用。 12.可以接爱迪生6.0/7.0网络版软件。(需要卡发接受系统支持) 13.短信发送速度快。提交十万条号码到服务器,只需要一分钟。 14.客户发送的号码可以随意打包下载。 15.设置短信发送时间,可以设置周日到周六中的任一天可以发送。也可以设置发送的具体时间,例如:星期日到星期六的07:00到20:30.可以发送短信。 16.可以设置A类短信和B类短信,两种充值方式。A类短信是网关短信,B类短信是虚拟短信,客户在发送的时候可以选择短信类别 17.可以手工添加上行的号码,也可以导入。就是用户回复的内容,可以手工添加,从爱迪生中导出,经过处理批量导入到系统中。 18.增加用户优先级选项,数值为:1到7.数字越小,级别越高。并且在没有发送的情况下,可以将需要先发的短信移到最上面去发。(需要接受系统支持) 19.增加短信投票功能,客户可以自己建议短信投票,然后根据用户的回复内容统计出来。收集客户投票的方法有两种,第一种是接上一个能回复的网关接口,从网关接口上直接读取客户回复的内容。第二种,管理员直接在后台人工添加客户回复的内容,可以批量导入。 20.增加报表功能,可以统计出,每个用户的每天发送情况,生成Excel文件方便结算。 21.有网关回复系统,可以发生日短信,可以定制短信。 22.增加短信投票功能。 各系统简要说明: 1、WEB客户端:客户通过网址,直接输入用户名和密码登录,进行发送短信。 2、WEB代理商:代理商平台,代理商通过此平台可以开用户,和给用户充值等操作。 3、WEB管理员:总管理员后台,管理员的一切操作在此平台。 4、卡发接收系统:此系统的主要目的是将客户提交的号码,接收下来,通过短信猫发出去。其原理是:软件可以设置多长时间从数据库中取一次数据,当有数据时,会自动下载号码文件,将手机号码和短信内容,写进爱迪生6.0/7.0网络版的数据库中,短信便可自动发送。 5、网关接收系统:本系统的功能也是将号码接收下来,只不过是通过管理员设置好的网关接口发出去的。此系统的主要目的是让客户端感觉不到发送短信很慢。客户端只需要提交号码,由此系统接收号码发出去,从而减轻客户端的压力。 6、网关回复系统: 本系统的功能是将对接上的回复短信内容给接受过来,存到用户的收件箱中的。(解决多个用户使用一个接口,回复内容要指定到用户的收件箱) 7、软件版客户端:客户通过安装此软件,直接登录平台发送短信。客户有两个登录方式,一个是WEB的登录方式,一个是软件版的登录方式。也就是登录方式的不同,登录后的功能及数据都是相同的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值