PHP 生成短信验证码 并验证码设置时效
时间: 2024-05-14 10:19:16 浏览: 11
可以使用以下代码生成短信验证码并设置时效:
```php
// 生成 6 位随机验证码
$code = rand(100000, 999999);
// 将验证码存储到数据库或缓存中
// 这里假设使用 Redis 缓存,有效期为 5 分钟
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->set('sms_code_' . $phone, $code, 300);
// 将验证码发送到用户手机
// 这里假设使用阿里云短信服务
$client = new DefaultAcsClient($profile);
$request = new SendSmsRequest();
$request->setPhoneNumbers($phone);
$request->setSignName('签名');
$request->setTemplateCode('模板代码');
$request->setTemplateParam(json_encode(['code' => $code]));
$response = $client->getAcsResponse($request);
```
其中 `$phone` 是接收验证码的手机号码,`$code` 是生成的随机验证码。将 `$code` 存储到数据库或缓存中,并设置有效期为 5 分钟。然后将验证码发送到用户手机。
在验证用户输入的验证码时,可以从数据库或缓存中读取对应手机号码的验证码,判断是否匹配以及是否过期。
```php
// 从缓存中读取验证码
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$stored_code = $redis->get('sms_code_' . $phone);
// 判断验证码是否匹配
if ($input_code == $stored_code) {
// 验证码匹配,执行相关操作
} else {
// 验证码不匹配,返回错误提示
}
// 判断验证码是否过期
if (!$stored_code) {
// 验证码已过期,返回错误提示
}
```