安装SDK:
使用Composer安装阿里云PHP SDK:
composer require alibabacloud/client
发送验证码:
当用户请求发送验证码时,后端应执行以下操作:
<?php require 'vendor/autoload.php'; use AlibabaCloud\Client\AlibabaCloud; use AlibabaCloud\Client\Exception\ClientException; use AlibabaCloud\Client\Exception\ServerException; AlibabaCloud::accessKeyClient('<YOUR-ACCESS-KEY>', '<YOUR-ACCESS-SECRET>') ->regionId('cn-hangzhou') ->asDefaultClient(); $code = rand(100000, 999999); //生成6位随机验证码 // 将验证码存储到会话或数据库,并设置有效期 $_SESSION['sms_code'] = $code; $_SESSION['sms_code_expiry'] = time() + 300; //设置验证码5分钟后过期 try { $result = AlibabaCloud::rpc() ->product('Dysmsapi') ->version('2017-05-25') ->action('SendSms') ->method('POST') ->host('dysmsapi.aliyuncs.com') ->options([ 'query' => [ 'RegionId' => "cn-hangzhou", 'PhoneNumbers' => "<USER-PHONE-NUMBER>", 'SignName' => "<YOUR-SIGN-NAME>", 'TemplateCode' => "<YOUR-TEMPLATE-CODE>", 'TemplateParam' => json_encode(['code' => $code]), ], ]) ->request(); print_r($result->toArray()); } catch (ClientException $e) { echo $e->getErrorMessage() . PHP_EOL; } catch (ServerException $e) { echo $e->getErrorMessage() . PHP_EOL; } ?>
验证验证码:
当用户提交验证码时,比较用户输入的验证码与会话或数据库中存储的验证码,然后判断验证码是否过期。
<?php $userInputCode = $_POST['code']; // 从表单或AJAX请求获取用户输入的验证码 if (isset($_SESSION['sms_code']) && $_SESSION['sms_code'] == $userInputCode && time() <= $_SESSION['sms_code_expiry']) { echo "验证码正确!"; // 执行其他注册逻辑 } else { echo "验证码错误或已过期!"; } ?>