PHP发短信实现 ***

访客4年前黑客资讯387

1要拼接接收的手机号和短信

public function sendcode()
    {
        $parpm = input();
        $valist = $this->validate($parpm, [
            'phone' => 'require|regex:1[3-9]\d{9}'
        ]);
        if ($valist !== true) {
            $res = [
                'code' => 400,
                'msg' => $valist
            ];
            return Json($res);
            die;
        }
        $timer = cache('register_time_' . $parpm['phone']);
        if (time() - $timer < 60) {
            $rs = [
                'code' => '500',
                'msg' => '发送太过频繁'
            ];
            echo json_encode($rs);
            die;
        }
        $co = mt_rand(1000, 9999);
        $code = '%23code%23%3d' . $co;
        //发送短信验证
//          $resule=sendmsg($parpm['phone'],$code);
        $resule = true;
        if ($resule === true) {
            cache('register_code_' . $parpm['phone'], $co, 180);
            cache('register_time_' . $parpm['phone'], time(), 180);
            $re = [
                'code' => 200,
                'msg' => '短信发送成功',
                'data' => "$code"
            ];
            echo json_encode($re);
            die;
        } else {
            $re = [
                'code' => 400,
                'msg' => $resule
            ];
            echo json_encode($re);
            die;
        }
    }

2拼接要发送短信的要求

if(!function_exists('sendmsg')){
     function sendmsg($phone,$code){
         $gateway=config('msg.gateway');
         $appkey=config('msg.appkey');
         $tpl_id=config('msg.tpl_id');
         $url=$gateway.'?mobile='.$phone.'&tpl_id='.$tpl_id.'&tpl_value='.$code.'&key='.$appkey;
         $res=curl_require($url,false,[],false);
         if(!$res){
            return '请求失败';
         }
         $arr=json_decode($res,true);
         if(isset($arr['code'])&&$arr['code']==10000){
              return true;
         }else{
             return false;
         }
     }
}

3向第三方请求

if(!function_exists('curl_require')){
      function curl_require($url,$post=true,$parpm=[],$https=false){
          $ch=curl_init($url);
          if($post){
                curl_setopt($ch,CURLOPT_PORT,true);
                curl_setopt($ch,CURLOPT_POSTFIELDS,$parpm);
          }
          if($https){
               curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
          }
          curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
          $res=curl_exec($ch);
          curl_close($ch);
          return $res;
      }
}

下面是aliyun的发信deom

// 代码节选,详见dy *** s_php.zip\aliyun-dy *** s-php-sdk\api_demo/SmsDemo.php
...
class SmsDemo
{
    ...
 * 短信服务API产品的DEMO程序,工程中包含了一个SmsDemo类,直接通过
 * 执行此文件即可体验短信服务产品API功能(只需要将AK替换成开通了云通信-短信服务产品功能的AK即可)
 * 备注:Demo工程编码采用UTF-8
 */
/**
     * 发送短信
     * @return stdClass
     */
    public static function sendSms() {
        // 初始化SendSmsRequest实例用于设置发送短信的参数
        $request = new SendSmsRequest();
        // 必填,设置短信接收号码
        $request->setPhoneNumbers("12345678901");
        // 必填,设置签名名称,应严格按"签名名称"填写,请参考: https://dy *** s.console.aliyun.com/dy *** s.htm#/develop/sign
        $request->setSignName("短信签名");
        // 必填,设置模板CODE,应严格按"模板CODE"填写,(如果发送国际/港澳台消息时,请使用国际/港澳台短信模版) 请参考: https://dy *** s.console.aliyun.com/dy *** s.htm#/develop/template
        $request->setTemplateCode(" *** S_0000001");
        // 可选,设置模板参数, 假如模板中存在变量需要替换则为必填项
        $request->setTemplateParam(json_encode(Array(  // 短信模板中字段的值
            "code"=>"12345",
            "product"=>"dsd"
        )));
        // 可选,设置流水号
        $request->setOutId("yourOutId");
        // 选填,上行短信扩展码(扩展码字段控制在7位或以下,无特殊需求用户请忽略此字段)
        $request->setSmsUpExtendCode("1234567");
        // 发起访问请求
        $acsResponse = static::getAcsClient()->getAcsResponse($request);
        return $acsResponse;
    }
// 调用示例:
set_time_limit(0);
header('Content-Type: text/plain; charset=utf-8');
$response = SmsDemo::sendSms();
echo "发送短信(sendSms)接口返回的结果:\n";
print_r($response);

完整版deom下载:https://help.aliyun.com/document_detail/55359.html?spm=a2c4g.11186623.4.2.796351cdoeTnoI


相关文章

PHP CLI模式开发敷衍笔记

PHP CLI模式开发不需要任何一种Web服务器(包括Apache或MS IIS等),这样,CLI可以运行在各种场合。 有两种方法可以运行PHP CLI脚本。 第一种方法是使用php -f /pat...

浅谈php运用mysql注入问题危害以及预防方法

登录无论get还是post,传过的数据如果不过滤,就可以通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令. 在用户名输入框中输入:' or...

简单站外跳转页面PHP源码

效果是这样滴~ <meta http-equiv="refresh" content="1;url='<?php echo $url;?>';"> content是跳转时间...

PHP 常用的header头部定义汇总(转)

思源简单整理 <?php header('HTTP/1.1 200 OK'); // ok 正常访问 header('HTTP/1.1 404 Not Found'); //通知浏览器 页面不存...

PHP节日倒计时代码,时间戳戳戳

今天在写模板的时候突发奇想,香弄一个节日倒计时,哎呀,太香了,老爸在做饭,居然打错字了,2333。 我心想尼玛中国这么多节日,,,日 要写到哪会呀,然后我就偷懒了,去找度娘。 找到了网钛写的PHP...

思源工具箱抖音api解析接口更新

<?php header('Access-Control-Allow-Origin:*'); header('Content-Type:text/json;charset=utf8'); /*...