安装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 "验证码错误或已过期!";
}
?>