对接宝塔的仪表盘PHP教程(PHP+JS)

查看 29|回复 2
作者:美文苑文学网   
渲染效果如下,实际就是小编的哈



image.png (61.59 KB, 下载次数: 0)
下载附件
保存到相册
26分钟前 上传

务必下载百度的图表JS,也就是echarts.min.js。貌似这个货有点肥已经亚健康了。看看有没有CDN的自行找找。后端PHP输出接口开始讲解。
1,为了保持良好的习惯,我们分3个文件去实现,第一个文件就是宝塔每个API接口,第二个就是封装一个宝塔的PHP类文件,第三个就是JSON输出接口,方便图表的JS对接渲染
配置文件命名为config.php,代码如下:
[ol]
  • '/system?action=GetSystemTotal',           //获取系统基础统计
  • 'GetDiskInfo' => '/system?action=GetDiskInfo',                             //获取磁盘分区信息
  • 'GetNetWork' => '/system?action=GetNetWork',                               //获取实时状态信息(CPU、内存、网络、负载)
  • );[/ol]复制代码我这里随意举例了几个哈,其他的自行打开你的宝塔面板F12去获取了。
    第二个封装一个PHP类,命名为Bt.php
    [ol]
  • BT_PANEL = $bt_panel;
  •     if($bt_key) $this->BT_KEY = $bt_key;
  •     }
  •           public function GetSystemTotal(){
  •           $url = $this->BT_PANEL.$this->config("GetSystemTotal");
  •     $p_data = $this->GetKeyData();
  •           $result = $this->HttpPostCookie($url,$p_data);
  •           $data = json_decode($result,true);
  •           return $data;
  •           }
  •           public function GetDiskInfo(){
  •           $url = $this->BT_PANEL.$this->config("GetDiskInfo");
  •           $p_data = $this->GetKeyData();
  •     $result = $this->HttpPostCookie($url,$p_data);
  •     $data = json_decode($result,true);
  •           return $data;
  •           }
  •           public function GetNetWork(){
  •           $url = $this->BT_PANEL.$this->config("GetNetWork");
  •           $p_data = $this->GetKeyData();
  •     $result = $this->HttpPostCookie($url,$p_data);
  •           $data = json_decode($result,true);
  •           return $data;
  •           }
  •         public function GetKeyData(){
  •         $now_time = time();
  •         $p_data = array(
  •         'request_token'        =>        md5($now_time.''.md5($this->BT_KEY)),
  •         'request_time'        =>        $now_time
  •         );
  •         return $p_data;   
  •         }
  •         public function GetKeyData(){
  •         $now_time = time();
  •         $p_data = array(
  •         'request_token'        =>        md5($now_time.''.md5($this->BT_KEY)),
  •         'request_time'        =>        $now_time
  •         );
  •         return $p_data;   
  •         }
  •         private function HttpPostCookie($url, $data,$timeout = 60){
  •         $cookie_file='./Cookie/'.md5($this->BT_PANEL).'.cookie';//定义cookie保存位置 自行创建文件夹
  •         if(!file_exists($cookie_file)){
  •         $fp = fopen($cookie_file,'w+');
  •         fclose($fp);
  •         }        
  •         $ch = curl_init();
  •         curl_setopt($ch, CURLOPT_URL, $url);
  •         curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
  •         curl_setopt($ch, CURLOPT_POST, 1);
  •         curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
  •         curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
  •         curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
  •         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  •         curl_setopt($ch, CURLOPT_HEADER, 0);
  •         curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
  •         curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  •         $output = curl_exec($ch);
  •         curl_close($ch);
  •         return $output;
  •         }
  •         private function config($str){
  •         require_once('config.php');
  •         return $config[$str];
  •         }
  • }[/ol]复制代码3,最后命名一个文件index.php就可以,这就是JSON输出的了哈。
    [ol]
  • GetSystemTotal());//获取系统基础统计
  • }
  • if($enews=='getnetwork'){
  • echo json_encode($bt->GetNetWork());//获取实时状态信息(CPU、内存、网络、负载)
  • }
  • if($enews=='getdiskinfo'){
  • echo json_encode($bt->GetDiskInfo());//获取磁盘信息
  • }[/ol]复制代码此JSON接口不仅仅是完美集成到网站的,也可以集成到小程序,app上面的哈。不要单纯认为网站才可以的哈。接下来就是前端AJAX发起请求,获取接口后用百度图表组件进行渲染就可以了!实在连前端都看不懂的下期再讲解

    宝塔, 接口

  • 美文苑文学网
    OP
      
    务必生产环境那接口输出文件加权限。反之不加权限被恶意调用盗刷就跟小编没有关系了
    nixi2021   
    技术文章我必须支持一下
    您需要登录后才可以回帖 登录 | 立即注册

    返回顶部