63 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace addons\clicaptcha\controller;
 | 
						|
 | 
						|
use addons\clicaptcha\library\Clicaptcha;
 | 
						|
use think\Config;
 | 
						|
 | 
						|
/**
 | 
						|
 * 公共
 | 
						|
 */
 | 
						|
class Api extends \app\common\controller\Api
 | 
						|
{
 | 
						|
    protected $noNeedLogin = '*';
 | 
						|
 | 
						|
    public function _initialize()
 | 
						|
    {
 | 
						|
 | 
						|
        if (isset($_SERVER['HTTP_ORIGIN'])) {
 | 
						|
            header('Access-Control-Expose-Headers: __token__');//跨域让客户端获取到
 | 
						|
            header('Access-Control-Expose-Headers: X-Clicaptcha-Text');//跨域让客户端获取到
 | 
						|
        }
 | 
						|
        //跨域检测
 | 
						|
        check_cors_request();
 | 
						|
 | 
						|
        if (!isset($_COOKIE['PHPSESSID'])) {
 | 
						|
            Config::set('session.id', $this->request->server("HTTP_SID"));
 | 
						|
        }
 | 
						|
        parent::_initialize();
 | 
						|
    }
 | 
						|
 | 
						|
    public function index()
 | 
						|
    {
 | 
						|
        $this->error("当前插件暂无前台页面");
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * 获取验证码
 | 
						|
     */
 | 
						|
    public function start()
 | 
						|
    {
 | 
						|
        $clicaptcha = new Clicaptcha();
 | 
						|
        $response = $clicaptcha->create();
 | 
						|
        $contentType = $response->getHeader('Content-Type');
 | 
						|
        $text = urldecode($response->getHeader('X-Clicaptcha-Text'));
 | 
						|
        $content = $response->getContent();
 | 
						|
        $this->success($text, 'data:' . $contentType . ';base64,' . base64_encode($content));
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * 判断验证码
 | 
						|
     */
 | 
						|
    public function check()
 | 
						|
    {
 | 
						|
        $clicaptcha = new Clicaptcha();
 | 
						|
        $result = $clicaptcha->check($this->request->post("info", $this->request->post("captcha")), false);
 | 
						|
        if ($result) {
 | 
						|
            $this->success();
 | 
						|
        } else {
 | 
						|
            $this->error();
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |