HighSpeaker/.history/app/controller/login_20221223195321.php

71 lines
2.3 KiB
PHP
Raw Normal View History

2022-12-24 19:40:40 +05:30
// Copyright (C) 2022 enoch@Laysense.com
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
<?php
namespace app\controller;
use support\Request;
use Webman\Captcha\CaptchaBuilder;
use support\View;
class login
{
public function index(Request $request)
{
$msg=$request->get('msg', '');
$to=$request->get('to', '/admin');
View::assign('msg', $msg);
View::assign('to', $to);
return view('index/login');
}
public function check(Request $request)
{
$captcha = $request->post('code','0');
// 对比session中的captcha值
if (strtolower($captcha) !== $request->session()->get('captcha')) {
return redirect('/login?msg=验证码错误');
}
$name = $request->post('name','0');
$password = $request->post('password','0');
if($name==getenv('admin') && $password==getenv('password')){
$session = $request->session();
$session->set('userinfo', 'admin');
$to = $request->post('to','/admin');
return redirect("$to");
}else{
return redirect('/login?msg=账号密码错误');
}
return response('错误');
}
public function captcha(Request $request)
{
// 初始化验证码类
$builder = new CaptchaBuilder;
// 生成验证码
$builder->build();
// 将验证码的值存储到session中
$request->session()->set('captcha', strtolower($builder->getPhrase()));
// 获得验证码图片二进制数据
$img_content = $builder->get();
// 输出验证码二进制数据
return response($img_content, 200, ['Content-Type' => 'image/jpeg']);
}
}