PHP接入阿里云短信平台,用来注册和找回密码验证

网站注册或找回密码时,为提升安全性,验证用户真实身份,决定使用手机短信验证码。阿里云短信平台,网站必须https访问才可以。

如今的阿里云短信平台都是新版本了,百度寻找了许久,都是错误的旧版本。直接阅读阿里云文档(官方地址),发现安装方法已有很大的不同,更加智能和易于使用了。现记录如下:

环境要求:PHP> = 5.5,开启cURL扩展,并使用TLS后端编译cURL 7.16.2+。

我目前的是阿里云服务器centos7.4 x64系统,使用了宝塔一键面板来管理。系统已全局安装 Composer,所以直接在项目目录中运行以下内容来安装 Alibaba Cloud Client for PHP 作为依赖项:

composer require alibabacloud/client

但是报错了:

This development build of composer is over 60 days old.

需要根据提示执行命令升级:

/usr/bin/composer self-update

然后再次执行刚才的安装命令,很久没有响应,应该是镜像源在国外,网络无法连接问题,切换到国内再操作就可以了。配置镜像源:

composer config -g repo.packagist composer https://packagist.laravel-china.org

安装完成后的界面如下图:

接下来,就要登录阿里云管理平台,开通短信功能(按量计费,4分钱一条短信)。为了安全,根据提示开通子账号系统,新建一个子账号用来管理短信,并获取AK和AKS密钥(点此获取)。

进入阿里云OpenAPI Explorer平台,将相关信息填入后,测试验证码发送是否成功:

成功后,将代码复制出来,然后根据业务需求进行修改,一个简单的获取验证码的PHP代码如下:

<?php require '../vendor/autoload.php'; 
include "../inc/conn.php"; 
use AlibabaCloud\Client\AlibabaCloud; 
use AlibabaCloud\Client\Exception\ClientException; 
use AlibabaCloud\Client\Exception\ServerException; 
// Download:https://github.com/aliyun/openapi-sdk-php 
// Usage:https://github.com/aliyun/openapi-sdk-php/blob/master/README.md 
AlibabaCloud::accessKeyClient('AK', 'AKS') 
                        ->regionId('cn-hangzhou') // replace regionId as you need
                        ->asDefaultClient();
$dz = htmlspecialchars(stripslashes(trim($_POST['key']))); //验证请求

if ($dz == '111111111') {
$tel = htmlspecialchars(stripslashes(trim($_POST['tel']))); //手机号
$code = htmlspecialchars(stripslashes(trim($_POST['code']))); //验证码
  
try {
    $result = AlibabaCloud::rpc()
                          ->product('Dysmsapi')
                          // ->scheme('https') // https | http
                          ->version('2017-05-25')
                          ->action('SendSms')
                          ->method('POST')
                          ->options([
                                        'query' => [
                                          'TemplateCode' => "SMS_167973440",//短信模板
                                          'SignName' => "教师文摘",//短信签名
                                          'PhoneNumbers' => $tel,//手机号
                                          'TemplateParam' => "{'code':'$code'}",//模板验证码
                                        ],
                                    ])
                          ->request();
    $yzjg = $result->toArray();
    if ($yzjg['Code'] = 'OK'){//发送成功后,返回验证码
    //查询数据库该手机号码的用户id和姓名  
    $sql_login = "select userid,username,sfzh from user_list where telephone='$tel' limit 1";
    $check_query = mysqli_query($conn,$sql_login); 
   if($result = mysqli_fetch_array($check_query)){
     $userid= $result['userid'];
     $username= $result['username'];
     $sfzh = $result['sfzh'];
     $hczf = $userid.'&'.$username.'&'.$sfzh;//GET请求字符串
     $GETjiami = GETjiami($hczf,'OsmH8SZQdtb7eOffvy');//GET加密
     $fhsj = array('status' => '200','code' => $code,'GETjiami' => $GETjiami);
     echo json_encode($fhsj,JSON_UNESCAPED_UNICODE); 
  } else { 
     $list = array('status' => '500',"list"=>"该手机号没有注册用户!");
     echo json_encode($list,JSON_UNESCAPED_UNICODE); 
  }
   mysqli_free_result($check_query); 
      
    }
    //print_r($result->toArray());
//打印发送情况Array ( [Message] => OK [RequestId] => C12AA25E-D225-4071-8D02-CE02CE50FFB4 [BizId] => 992807560597441135^0 [Code] => OK )
} catch (ClientException $e) {
    echo $e->getErrorMessage() . PHP_EOL;
} catch (ServerException $e) {
    echo $e->getErrorMessage() . PHP_EOL;
}
}
?>

未经允许不得转载:教师文摘 » PHP接入阿里云短信平台,用来注册和找回密码验证

赞 (2)

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址