| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227 |
- <?php
- namespace app\api\controller;
- use app\common\controller\Api;
- use app\common\model\Users;
- use think\captcha\Captcha;
- use think\Request;
- /**
- * 验证接口
- */
- class Validate extends Api
- {
- protected $noNeedLogin = '*';
- protected $layout = '';
- protected $error = null;
- public function _initialize()
- {
- parent::_initialize();
- }
- /**
- * 获取验证码
- *
- * @ApiMethod (POST)
- * @param string $email 邮箱
- * @param string $id 排除会员ID
- */
- public function get_captcha()
- {
- $captcha = new Captcha(['codeSet' => '0123456789', 'length' => 4]);
- $id = uniqid();
- return $captcha->entry();
- // $id = uniqid();
- // $src = $_SERVER['REQUEST_SCHEME'].'://'.$this->request->host() . captcha_src($id);
- // ob_clean(); //清除缓冲区,防止出现“图像因其本身有错无法显示'的问题
- // $type = getimagesize($src)['mime']; //获取图片类型
- // header("Content-Type:{$type}");
- // $imgData = file_get_contents($src); //获取图片二进制流
- // $base64String = 'data:' . $type . ';base64,' . base64_encode($imgData);
- // $this->success('', ['id' => $id, 'img' => $base64String]);
- //
- // $this->success('请求成功',$base64String);
- //
- //
- // return Captcha_src(); // png图片
- // 获取验证码的图片内容
- $image = $captcha->entry();
- // 转换为Base64
- $base64Image = $this->imageToBase64($image);
- dump($base64Image);
- $this->success('', ['id' => $id, 'img' => $captcha->entry($id)]);
- return $captcha->entry($id);
- //return captcha_src();
- }
- protected function imageToBase64($image)
- {
- // 确保已经安装GD库或者Imagick扩展
- if (!function_exists('imagepng') && !function_exists('imagejpeg')) {
- throw new \Exception('Need to install GD library or ImageMagick extension');
- }
- ob_start();
- // 输出图片到输出缓冲区
- imagepng($image) || imagejpeg($image);
- $imageContent = ob_get_contents();
- ob_end_clean();
- // 将图片内容转为Base64
- $base64Image = 'data:image/png;base64,' . base64_encode($imageContent);
- // 释放图片资源
- imagedestroy($image);
- return $base64Image;
- }
- /**
- * 检测邮箱
- *
- * @ApiMethod (POST)
- * @param string $email 邮箱
- * @param string $id 排除会员ID
- */
- public function check_email_available()
- {
- $email = $this->request->post('email');
- $id = (int)$this->request->post('id');
- $count = Users::where('email', '=', $email)->where('id', '<>', $id)->count();
- if ($count > 0) {
- $this->error(__('邮箱已经被占用'));
- }
- $this->success();
- }
- /**
- * 检测用户名
- *
- * @ApiMethod (POST)
- * @param string $username 用户名
- * @param string $id 排除会员ID
- */
- public function check_username_available()
- {
- $username = $this->request->post('username');
- $id = (int)$this->request->post('id');
- $count = Users::where('username', '=', $username)->where('id', '<>', $id)->count();
- if ($count > 0) {
- $this->error(__('用户名已经被占用'));
- }
- $this->success();
- }
- /**
- * 检测昵称
- *
- * @ApiMethod (POST)
- * @param string $nickname 昵称
- * @param string $id 排除会员ID
- */
- public function check_nickname_available()
- {
- $nickname = $this->request->post('nickname');
- $id = (int)$this->request->post('id');
- $count = Users::where('nickname', '=', $nickname)->where('id', '<>', $id)->count();
- if ($count > 0) {
- $this->error(__('昵称已经被占用'));
- }
- $this->success();
- }
- /**
- * 检测手机
- *
- * @ApiMethod (POST)
- * @param string $mobile 手机号
- * @param string $id 排除会员ID
- */
- public function check_mobile_available()
- {
- $mobile = $this->request->post('mobile');
- $id = (int)$this->request->post('id');
- $count = Users::where('mobile', '=', $mobile)->where('id', '<>', $id)->count();
- if ($count > 0) {
- $this->error(__('该手机号已经占用'));
- }
- $this->success();
- }
- /**
- * 检测手机
- *
- * @ApiMethod (POST)
- * @param string $mobile 手机号
- */
- public function check_mobile_exist()
- {
- $mobile = $this->request->post('mobile');
- $count = Users::where('mobile', '=', $mobile)->count();
- if (!$count) {
- $this->error(__('手机号不存在'));
- }
- $this->success();
- }
- /**
- * 检测邮箱
- *
- * @ApiMethod (POST)
- * @param string $mobile 邮箱
- */
- public function check_email_exist()
- {
- $email = $this->request->post('email');
- $count = Users::where('email', '=', $email)->count();
- if (!$count) {
- $this->error(__('邮箱不存在'));
- }
- $this->success();
- }
- /**
- * 检测手机验证码
- *
- * @ApiMethod (POST)
- * @param string $mobile 手机号
- * @param string $captcha 验证码
- * @param string $event 事件
- */
- public function check_sms_correct()
- {
- $mobile = $this->request->post('mobile');
- $captcha = $this->request->post('captcha');
- $event = $this->request->post('event');
- if (!\app\common\library\Sms::check($mobile, $captcha, $event)) {
- $this->error(__('验证码不正确'));
- }
- $this->success();
- }
- /**
- * 检测邮箱验证码
- *
- * @ApiMethod (POST)
- * @param string $email 邮箱
- * @param string $captcha 验证码
- * @param string $event 事件
- */
- public function check_ems_correct()
- {
- $email = $this->request->post('email');
- $captcha = $this->request->post('captcha');
- $event = $this->request->post('event');
- if (!\app\common\library\Ems::check($email, $captcha, $event)) {
- $this->error(__('验证码不正确'));
- }
- $this->success();
- }
- }
|