🔓 Ultimate Webshell - Penetration Testing Tool

📖 File Reader

<?php

namespace app\admin\controller;
use app\admin\common\Common_config;
use app\admin\common\Common_menus;
use app\BaseController;
use think\facade\Db;
use think\facade\Session;
use think\facade\View;

class Base extends BaseController
{
    protected $page = 1;//默认页数
    protected $limit = 10;//默认条数
    protected $admin_id = 0;//管理员id
    protected $admin_info = [];//管理员信息
    protected $table_jurisdiction = [];//表权限
    // 初始化
    protected function initialize()
    {
        $this->page = input('page')?:$this->page;
        $this->limit = input('limit')?:$this->limit;
        $admin_id = session("admin_id");
        header("Content-Type:text/html; charset=utf-8");
        if (empty($admin_id)){
            header('Location:'.Url('admin/Login/login'));exit;
        }
        //会员信息
        $admin_info = db::name("admin")->alias("a")
            ->join("admin_role b","a.role_id = b.id","LEFT")
            ->join("shop c","a.shop_id = c.id","left")
            ->field("a.*,b.name as role_name,b.type as role_type,c.is_seal,c.seal_describe,c.time_deblocking")
            ->where("a.admin_id = $admin_id")
            ->find();
        $this->shop_deblocking($admin_info);
        $admin_info["time_deblocking"] = $admin_info["time_deblocking"] > 0?date("Y-m-d H:i",$admin_info["time_deblocking"]):'';
        $this->admin_id = session("admin_id");
        $this->admin_info = $admin_info;
        $config = Common_config::config("'name','url'");
        $admin_log_time = db::name("admin_login_log")->where("admin_id = $admin_id")->order("id desc")->value("time_add");
        if ($admin_log_time > session("admin_login_time")){
            //$this->tips_out();
        }
        /*菜单栏处理*/
        Common_menus::menus($admin_id);
        /*页面权限*/
        $table_jurisdiction = Common_menus::table_jurisdiction($admin_id);
        $table_jurisdiction_json = json_encode($table_jurisdiction);
        return View::assign([
            'admin_id'=>$admin_id,
            'admin_info'=>$admin_info,
            'config'=>$config,
            'table_jurisdiction'=>$table_jurisdiction,
            'table_jurisdiction_json'=>$table_jurisdiction_json,
        ]);
    }

    /*退出提示*/
    public function tips_out()
    {
        $html = '<script src="/public/admin_layui/lib/layui-v2.6.3/layui.js" charset="utf-8"></script>
                <link href="/public/layui-v2.8.1/layui/css/layui.css" rel="stylesheet">
                <script>
                    window.onload = function () {                            
                        parent.layer.confirm("本次登录已失效,本账号已在其它设备登录!(如非本人操作建议修改本账号密码。)",{
                            icon: 4,
                            title:"提示",
                            btn: ["确定","取消"], //按钮
                            shade: 0.5, //不显示遮罩
                            closeBtn: 0
                        }, function () {
                            if(window.parent.length>0){
                                window.parent.location.href = "/admin/Login/login";
                            }else{
                                window.location.href="/admin/Login/login";
                            }
                        }, function () {
                            if(window.parent.length>0){
                                window.parent.location.href = "/admin/Login/login";
                            }else{
                                window.location.href="/admin/Login/login";
                            }
                        });
                    } 
                </script>';
        session("admin_id",null);
        session("admin_login_time",'');
        print_r($html);
        exit;
    }

    /**
     * 店铺解封处理
     * @param array $admin_info 账号信息
     * @return string
     */
    public function shop_deblocking($admin_info=[])
    {
        if ($admin_info["is_seal"] == 1 && time() >= $admin_info["time_deblocking"]){
            $shop_info = db::name("shop")->where("id = $admin_info[shop_id]")->find();
            if ($shop_info["is_seal"] == 1){
                if (!empty($shop_info["goods_id_str"])){
                    db::name("goods")->where("goods_id in ($shop_info[goods_id_str])")->update(['is_sold'=>1]);
                }
                $info_variation = [
                    'admin_id'=>$admin_info["admin_id"],
                    'shop_id'=>$admin_info["shop_id"],
                    'type'=>2,
                    'describe'=>"店铺解封!",
                    'goods_id_str'=>$shop_info["goods_id_str"],
                    'time_add'=>time(),
                ];
                db::name("shop_variation")->insert($info_variation);
                db::name("shop")->where("id = $admin_info[shop_id]")->update(['is_seal'=>0,'seal_describe'=>'','goods_id_str'=>'','time_deblocking'=>0]);
            }
        }
        return 'ok';
    }
}