1、创建一个controller
class ImgController extends Controller { public function actions() { return [ 'captcha' => [ 'class' => 'yii\captcha\CaptchaAction', 'maxLength' => 4, 'minLength' => 4, ], ]; } }
这样就可以通过xxx.com/img/captcha 访问验证码
2、验证码验证
创建一个from Model
class LoginForm extends Model { public string $username; public string $password; public string $captcha; public function rules() { return [ ['username', 'required', 'message' => '请输入用户名'], ['password', 'required', 'message' => '请输入密码'], ['captcha', 'captcha', "captchaAction" => "/public/img/captcha", 'message' => "验证码错误"], ]; } public function attributeLabels() { return [ 'id' => 'id', 'username' => 'username', 'password' => 'Password' ]; } }
注意:captchaAction 是刚才验证码生成的方法
3、controller 验证
$adminService = new AdminService(); $loginForm = new LoginForm(); $data = Yii::$app->request->post("data"); $temp = $loginForm->load(["LoginForm" => $data]); if (!$loginForm->validate()) { $temp = $loginForm->getErrors(); $temp = array_values($temp); return json_encode(["code" => 201, "msg" => array_values($loginForm->getErrors())[0][0]]); }