在 Yii 框架中集成短信验证码服务,你可以选择使用第三方服务提供商,例如 Twilio、Nexmo 等。这里以 Twilio 为例,介绍如何在 Yii 中集成短信验证码服务。
首先,注册一个 Twilio 账户并获取 API 密钥(Account SID 和 Auth Token)。访问 https://www.twilio.com/ 并按照指示完成注册。
安装 Twilio PHP 库。在你的 Yii 项目中运行以下命令:
composer require twilio/sdk
<?php
namespace app\controllers;
use Yii;
use Twilio\Rest\Client;
class SmsController extends \yii\web\Controller
{
public function actionSendSms()
{
// 获取用户输入的手机号码和验证码
$phoneNumber = Yii::$app->request->post('phone_number');
$verificationCode = Yii::$app->request->post('verification_code');
// 验证输入
if (!$this->validatePhoneNumber($phoneNumber) || !$this->validateVerificationCode($verificationCode)) {
return $this->asJson(['status' => 'error', 'message' => 'Invalid phone number or verification code.']);
}
// 初始化 Twilio 客户端
$twilio = new Client(Yii::$app->params['twilioAccountSid'], Yii::$app->params['twilioAuthToken']);
// 发送短信验证码
try {
$message = $twilio->messages->create(
$phoneNumber,
[
'body' => "Your verification code is: {$verificationCode}",
'from' => Yii::$app->params['twilioPhoneNumber'],
]
);
return $this->asJson(['status' => 'success', 'message' => 'SMS sent successfully.', 'messageId' => $message->sid]);
} catch (\Exception $e) {
return $this->asJson(['status' => 'error', 'message' => 'Failed to send SMS.', 'error' => $e->getMessage()]);
}
}
protected function validatePhoneNumber($phoneNumber)
{
// 在这里添加你的电话号码验证逻辑
return preg_match('/^1[3-9]\d{9}$/', $phoneNumber);
}
protected function validateVerificationCode($verificationCode)
{
// 在这里添加你的验证码验证逻辑
return strlen($verificationCode) === 4;
}
}
<?php
$config = [
// ...
'params' => [
// ...
'twilioAccountSid' => 'your_twilio_account_sid',
'twilioAuthToken' => 'your_twilio_auth_token',
'twilioPhoneNumber' => 'your_twilio_phone_number',
],
];
return $config;
<?php
use yii\helpers\Html;
use yii\helpers\Url;
?>
<div class="send-sms">
<h1>Send Verification Code</h1>
<p>Please enter your phone number to receive a verification code:</p>
<form action="<?= Url::toRoute(['sms/send-sms']) ?>" method="post">
<div class="form-group">
<label for="phone_number">Phone Number:</label>
<input type="text" name="phone_number" id="phone_number" required>
</div>
<button type="submit">Send Code</button>
</form>
</div>
现在,当用户点击发送短信验证码按钮时,他们将看到一个表单,输入手机号码后,系统将发送一条包含验证码的短信到该手机号码。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。