🔓 Ultimate Webshell - Penetration Testing Tool

📖 File Reader

<?php
namespace app\admin\controller;
use adminCreate\form\Form;
use app\admin\common\Common_config;
use think\facade\Db;
use think\facade\View;

class Ad extends Base
{
    /*广告列表*/
    public function ad_list(){
        $list = db::name("ad_act")->order("id asc")->select();
        View::assign([
            'list'=>$list,
        ]);
        return View::fetch();
    }

    /*广告信息*/
    public function ad_list_ajax()
    {
        $title = input("param.title");
        $act_id = input("param.act_id");
        $where = 1;
        if (!empty($title)){
            $where .= " and a.name like '%".$title."%'";
        }
        if (!empty($act_id)){
            $where .= " and a.act_id = $act_id";
        }
        $list = db::name("ad")->alias("a")
            ->join("ad_act b","a.act_id = b.id","LEFT")
            ->field("a.*,b.name as name_act")
            ->where($where)
            ->order("a.sort desc")
            ->page($this->page,$this->limit)
            ->select();
        $list = json_decode($list,true);
        foreach ($list as $k => $v){
            $list[$k]["img"] = str_replace('\\',"/",$v["img"]);
            $list[$k]["add_time"] = date("Y-m-d H:i",$v["add_time"]);
        }
        $count = db::name("ad")->alias("a")
            ->join("ad_act b","a.act_id = b.id","LEFT")
            ->where($where)
            ->count();
        return $this->layui_json($count,$list);
    }

    /*广告列表字段修改*/
    public function ad_list_field_update()
    {
        $id = input("param.id");
        $field_name = input("param.field_name");
        $info[$field_name] = input("param.value");
        db::name("ad")->where("id = $id")->data($info)->update();
        return $this->succeed_json("操作成功");
    }

    /*广告查询*/
    public function ad_info()
    {
        $id = input("param.id");
        $info = db::name("ad")->where("id = $id")->find();
        $data = [
            'info'=>$info,
        ];
        return $this->succeed_json("ok",$info);
    }

    /*广告上传*/
    public function ad_upload()
    {
        $id = input("param.id");
        if (input("post.")) {
            header("Content-Type:text/html; charset=utf-8");
            $info = [
                'name'=>input("param.name"),
                'describe'=>input("param.describe")!=''?input("param.describe"):'',
                'link'=>input("param.link")!=''?input("param.link"):'',
                'sort'=>input("param.sort")!=''?input("param.sort"):'',
                'act_id'=>input("param.act_id"),
                'img'=>implode(",",input("param.img")) ,
                'type'=>input("param.type"),
                'add_time'=>time(),
            ];
            if (empty($id)){
                db::name("ad")->insertGetId($info);
            }else{
                db::name("ad")->where("id = $id")->data($info)->update();
            }
            return $this->succeed_json("操作成功");
        }else{
            $info = ['name'=>'','act_id'=>0,'describe'=>'','img'=>'','link'=>'','sort'=>0];
            if (!empty($id)){
                $info = db::name("ad")->where("id = $id")->find();
            }
            $form = new Form();
            $form->tabs('tabs1', '基本信息');
            $form->input('name', '广告名称',$info["name"])->required()->tabs("tabs1");
            $form->selectOne('act_id', '所属分类',$info["act_id"])->setOptions(function(){
                $list_act = db::name("ad_act")->order("id asc")->select()->toArray();
                $menus = [];
                foreach ($list_act as $k => $v){
                    $menus[] = ['label'=>$v["name"],'value'=>$v["id"]];
                }
                return $menus;
            })->multiple(false)->filterable(false)->required()->tabs("tabs1");
            $form->upload('img', '缩略图', '/admin/ad/uploads', [$info["img"]])->nultiple(false)->required('',"array")->tabs("tabs1");
//            $form->input('describe', '简单描述',$info["describe"])->type('textarea')->tabs("tabs1");
//            $form->input('link', '外部连接',$info["link"])->tabs("tabs1");
//            $form->number('sort', '排序',$info["sort"])->tabs("tabs1");
            $form->hidden('id',$id);
            $form->hidden('type',1);
            $form->button('/admin/Ad/ad_upload');
            return $form;
        }

    }

    /*广告删除*/
    public function ad_del()
    {
        $id = input("param.id");
        db::name("ad")->where("id = $id")->delete();
        return $this->succeed_json("删除成功");
    }

    /*图片上传*/
    public function selectImg()
    {
        $name = input("param.name");
        if (!empty($_FILES[$name]['name'])) {
            $img = '/public/uploads/'.$this->upload($name);
        }else{
            return $this->error_json("参数错误");
        }
        $data = [
            'img'=>$img,
        ];
        return $this->succeed_json("ok",$data);
    }

    /*广告所属分类*/
    public function ad_act(){
        return View::fetch();
    }

    /*全部分类*/
    public function act_list()
    {
        $list = db::name("ad_act")->order("id asc")->select();
        $data = [
            'list'=>$list,
        ];
        return $this->succeed_json("ok",$data);
    }

    /*广告列表数据*/
    public function ad_act_ajax()
    {
        $keyword = input("param.keyword");
        $where = 1;
        if (!empty($keyword)){
            $where .= " and name like '%".$keyword."%'";
        }
        $list = db::name("ad_act")->where($where)->order("sort desc")->page($this->page,$this->limit)->select()->toArray();
        //获取总页数
        $count = db::name("ad_act")->where($where)->count();
        return $this->layui_json($count,$list);
    }

    /*广告分类列表字段修改*/
    public function act_field_update()
    {
        $id = input("param.id");
        $field_name = input("param.field_name");
        $info[$field_name] = input("param.value");
        db::name("ad_act")->where("id = $id")->data($info)->update();
        return $this->succeed_json("操作成功");
    }

    /*是否为系统广告*/
    public function act_is_system_edit()
    {
        $id = input("param.id");
        $is_system = db::name("ad_act")->where("id = $id")->value("is_system");
        if ($is_system == 1){
            $info["is_system"] = 0;
        }else{
            $info["is_system"] = 1;
        }
        db::name("ad_act")->where("id = $id")->data($info)->update();
        return $this->succeed_json("ok");
    }

    /*分类数据查看*/
    public function ad_act_info()
    {
        $id = input("param.id");
        $act_info = db::name("ad_act")->where("id = $id")->find();
        $data = [
            'act_info'=>$act_info,
        ];
        return $this->succeed_json("ok",$data);
    }

    /*分类数据提交*/
    public function ad_act_upload()
    {
        $id = input("param.id");
        if (input("post.")){
            $info = [
                'name'=>input("param.name"),
                'sort'=>input("param.sort"),
            ];
            if (empty($id)){
                db::name("ad_act")->insertGetId($info);
            }else{
                db::name("ad_act")->where("id = $id")->data($info)->update();
            }
            return $this->succeed_json("操作成功");
        }else{
            $info = ['name'=>'','sort'=>0];
            if (!empty($id)){
                $info = db::name("ad_act")->where("id = $id")->find();
            }
            $form = new Form();
            $form->tabs('tabs1', '基本信息');
            $form->input('name', '分类名称',$info["name"])->required()->tabs('tabs1');
            $form->number('sort', '排序',$info["sort"])->required('','number')->tabs('tabs1');
            $form->button('/admin/Ad/ad_act_upload');
            $form->hidden('id',$id);
            return $form;
        }

    }

    /*分类删除*/
    public function ad_act_del()
    {
        $id = input("param.id");
        $count = db::name("ad")->where("act_id = $id")->count();
        if (!empty($count)){
            return $this->error_json("已存在广告不可删除!");
        }
        db::name("ad_act")->where("id = $id")->delete();
        return $this->succeed_json("删除成功");
    }

    /*上传处理*/
    public function uploads()
    {
        $config = Common_config::config("'url'");
        $http_type = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')) ? 'https://' : 'http://';
        $url = $config["url"] != ''?$config["url"]:$http_type . $_SERVER['HTTP_HOST'];
        if (!empty($_FILES["imageData"])){
            $url .= '/public/uploads/'.$this->upload('imageData');
            return $this->succeed_json("ok",$url);
        }
        if (!empty($_FILES["videoData"])){
            $url .= '/public/uploads/'.$this->upload('videoData');
            return $this->succeed_json("ok",$url);
        }
        if (!empty($_FILES["file"])){
            $url = '/public/uploads/'.$this->upload('file');
            return $this->succeed_json("ok",['filePath'=>$url,'name'=>$_FILES["file"]["name"]]);
        }
    }

    /*文件删除*/
    public function file_del()
    {
        $file = input("param.file");
        $preg = "/^http(s)?:\\/\\/.+/";
        if(!preg_match($preg,$file)) {
            $file_link = $_SERVER['DOCUMENT_ROOT'].$file;
        }else{
            $host = parse_url($file, PHP_URL_HOST);
            $file_link = str_replace("http://".$host,$_SERVER['DOCUMENT_ROOT'],$file);
            $file_link = str_replace("https://".$host,$_SERVER['DOCUMENT_ROOT'],$file_link);
        }
        if (file_exists($file_link)) {
            unlink($file_link);
        }
        return $this->succeed_json("文件删除成功");
    }
}