├── .gitattributes ├── README.md ├── adminer.php ├── file.php ├── filebox.php ├── info.php └── tz.php /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | 7 | # Standard to msysgit 8 | *.doc diff=astextplain 9 | *.DOC diff=astextplain 10 | *.docx diff=astextplain 11 | *.DOCX diff=astextplain 12 | *.dot diff=astextplain 13 | *.DOT diff=astextplain 14 | *.pdf diff=astextplain 15 | *.PDF diff=astextplain 16 | *.rtf diff=astextplain 17 | *.RTF diff=astextplain 18 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Filebox 2 | 服务器的文件管理 3 | 初始用户名和密码均为admin,务必第一时间修改。修改方法为直接编辑源代码。 4 | -------------------------------------------------------------------------------- /adminer.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/or2me/Filebox/a42aa8e0edf1c78b83741bd6ce22b2a55f8f4146/adminer.php -------------------------------------------------------------------------------- /file.php: -------------------------------------------------------------------------------- 1 | 6 | * @copyright Copyright (c) 2014-2016 7 | * @since Version 1.8.1.2 8 | * 9 | * 设置说明 10 | * $sitetitle - 标题名称 11 | * $filefolder - 程序目录 12 | * $user - 用户名 13 | * $pass - 密码 14 | * $safe_num - 设置多少次后禁止登陆,为0则不限制,建议为3-5 15 | * $mail - 若有恶意登录,会发邮件到这个邮箱,前提是mail()函数可用! 16 | */ 17 | date_default_timezone_set('Asia/Shanghai'); 18 | session_start(); 19 | error_reporting(1); 20 | $filefolder = "./"; 21 | $sitetitle = $_SERVER['HTTP_HOST']; 22 | $user = 'konica';//用户名 23 | $pass = 'dbfa3ff3e3785ac5cfd8b9f0e715e7e8';//加密后的密码 24 | $salt = 'www.iikira.com';//加密用盐,请乱打 25 | 26 | $enpassrmethod = md5(md5($salt).md5($_REQUEST['pass']));//加密密码的方式,更换保留“$_REQUEST['pass']” 27 | $encookie = substr(hash('sha512',hash('sha256',md5(md5($salt).md5($pass)))),34,76).substr(sha1(md5(md5($salt.$sitetitle.$user.$pass))),8,29);//加密cookie 28 | 29 | $safe_num = 5;//设置多少次后禁止登陆,为0则不限制,建议为3-5 30 | $mail = 'root@localhost';//若有恶意登录,会发邮件到这个邮箱,前提是mail()函数可用! 31 | $meurl = $_SERVER['PHP_SELF']; 32 | $os = (DIRECTORY_SEPARATOR=='\\')?"windows":'linux'; 33 | $op = (isset($_REQUEST['op']))?$_REQUEST['op']:'home'; 34 | $action = (isset($_REQUEST['action']))?$_REQUEST['action']:''; 35 | $folder = (isset($_REQUEST['folder']))?$_REQUEST['folder']:'./'; 36 | $arr = str_split($folder); 37 | if($arr[count($arr)-1]!=='/')$folder .= '/'; 38 | while (preg_match('/\.\.\//',$folder)) $folder = preg_replace('/\.\.\//','/',$folder); 39 | while (preg_match('/\/\//',$folder)) $folder = preg_replace('/\/\//','/',$folder); 40 | if($folder == '')$folder = $filefolder; 41 | $ufolder = $folder; 42 | if($_SESSION['error'] > $safe_num && $safe_num !== 0)printerror('您已经被限制登陆!'); 43 | 44 | /****************************************************************/ 45 | /* 用户登录函数 */ 46 | /* */ 47 | /* 需要浏览器开启Cookies才可使用 */ 48 | /****************************************************************/ 49 | 50 | ini_set("session.cookie_httponly", 1); 51 | if ($_COOKIE['user'] != $user || $_COOKIE['pass'] != $encookie) { 52 | if ($_REQUEST['user'] == $user && $enpassrmethod == $pass) { 53 | setcookie('user',$user,time()+60*60*24*1); 54 | setcookie('pass',$encookie,time()+60*60*24*1, NULL, NULL, NULL, TRUE); 55 | }else{ 56 | if ($_REQUEST['user'] == $user || $_REQUEST['pass']) $er = true; 57 | login($er); 58 | exit; 59 | } 60 | } 61 | 62 | 63 | /****************************************************************/ 64 | /* function maintop() */ 65 | /* */ 66 | /* 控制站点的样式和头部内容 */ 67 | /* $title -> 顶部标题 $showtop -> 是否显示头部菜单 */ 68 | /****************************************************************/ 69 | 70 | function maintop($title,$showtop = true) { 71 | global $meurl,$sitetitle; 72 | echo "\n\n\n\n\n" 73 | ."$sitetitle - $title\n" 74 | ."\n" 75 | ."\n" 76 | ."\n" 77 | ."\n"; 78 | if($_REQUEST['op']!=='home')$back = "
  • 返回 ".$_SESSION['folder']."
  • \n";else $back = ''; 79 | echo "

    $sitetitle

    \n"; 80 | if ($showtop) {//头部菜单内容 81 | echo ""; 89 | } 90 | echo "
    \n"; 91 | } 92 | 93 | 94 | /****************************************************************/ 95 | /* function login() */ 96 | /* */ 97 | /* 登录验证 $user and md5($pass) */ 98 | /* 需要浏览器支持Cookie */ 99 | /****************************************************************/ 100 | 101 | function login($er=false) { 102 | global $meurl,$op,$safe_num,$mail; 103 | setcookie("user","",time()-60*60*24*1); 104 | setcookie("pass","",time()-60*60*24*1); 105 | maintop("登录",false); 106 | 107 | if ($er) { 108 | if (isset($_SESSION['error'])){ 109 | $_SESSION['error']++; 110 | if($_SESSION['error'] > $safe_num && $safe_num !== 0){ 111 | mail($mail,'FileBox文件管理器提醒:文件被恶意登录!','该提醒来自FileBox:
    登录者IP为:'.$_SERVER['REMOTE_ADDR'],'From: '); 112 | echo ('ERROR: 您已经被限制登陆!'); 113 | exit; 114 | } 115 | }else{ 116 | $_SESSION['error'] = 1; 117 | } 118 | echo "用户名或密码错误!
    \n"; 119 | } 120 | 121 | echo "
    \n" 122 | ."\n" 123 | ."\n" 124 | ."\n" 125 | ."
    \n"; 126 | mainbottom(); 127 | } 128 | 129 | 130 | /****************************************************************/ 131 | /* function home() */ 132 | /* */ 133 | /* Main function that displays contents of folders. */ 134 | /****************************************************************/ 135 | 136 | function home() { 137 | global $os, $meurl ,$folder, $ufolder; 138 | 139 | $content1 = ""; 140 | $content2 = ""; 141 | 142 | $folder = gCode($folder); 143 | if(opendir($folder)){$style = opendir($folder);}else{printerror("目录不存在!\n");exit;} 144 | $a=1; 145 | $b=1; 146 | 147 | if($folder)$_SESSION['folder']=$ufolder; 148 | 149 | maintop("主页"); 150 | echo "\n"; 151 | while($stylesheet = readdir($style)) { 152 | $ufolder = $folder; 153 | $sstylesheet = $stylesheet; 154 | if($os!=='windows'):$qx = "";$xx='';else:$qx = '';$xx='';endif; 155 | if ($stylesheet !== "." && $stylesheet !== ".." ) { 156 | $stylesheet = uCode($stylesheet); 157 | $folder = uCode($folder); 158 | $rename = "\n"; 159 | if (is_dir(gCode($folder.$stylesheet)) && is_readable(gCode($folder.$stylesheet))) { 160 | $content1[$a] = "\n" 161 | ."\n" 162 | ."" 163 | ."\n" 164 | .$rename 165 | ."\n" 166 | .$qx."\n"; 167 | $a++; 168 | $folder = gCode($folder); 169 | }elseif(!is_dir(gCode($folder.$stylesheet)) && is_readable(gCode($folder.$stylesheet))){ 170 | $arr = explode('.',$folder.$stylesheet); 171 | $arr = end($arr); 172 | if($arr == 'zip'){#判断是否是zip文件 173 | $content2[$b] = "\n" 174 | ."\n" 175 | ."" 176 | ."\n" 177 | .$rename 178 | ."\n" 179 | .$qx."\n"; 180 | }elseif($arr == 'gif'||$arr == 'jpg'||$arr == 'png'||$arr == 'bmp'||$arr == 'png5'||$arr == 'psd'||$arr == 'webp'||$arr == 'gz'||$arr == 'gzip'){ 181 | $content2[$b] = "\n" 182 | ."\n" 183 | ."" 184 | ."\n" 185 | .$rename 186 | ."\n" 187 | .$qx."\n"; 188 | }else{ 189 | $content2[$b] = "\n" 190 | ."\n" 191 | ."" 192 | ."\n" 193 | .$rename 194 | ."\n" 195 | .$qx."\n"; 196 | } 197 | $b++; 198 | $folder = gCode($folder); 199 | } 200 | } 201 | } 202 | closedir($style); 203 | 204 | $lu = explode('/', $_SESSION['folder']); 205 | if($a != 1 and $b != 1){$content1[$a-1] = $content1[$a-1]."".$xx."";} 206 | array_pop($lu); 207 | $u = ''; 208 | echo '
    '; 209 | foreach ($lu as $v) { 210 | $u = $u.$v.'/'; 211 | if($v=='.'){$v='主页';}elseif($v==''){$v='根目录';} 212 | echo ''.$v.' » '; 213 | } 214 | 215 | echo "文件\n" 216 | ."",$a-1," 个文件夹 ",$b-1," 个文件
    " 217 | ."
    "; 218 | 219 | if($os!=='windows'):$qx = "\n";else:$qx = '';endif; 220 | echo "" 221 | ."" 231 | ."\n" 232 | ."\n" 233 | ."\n" 234 | ."\n" 235 | ."\n" 236 | ."\n" 237 | .$qx 238 | .""; 239 | if($_SESSION['folder']!="./" and $_SESSION['folder']!="/"){ 240 | $last = (substr($_SESSION['folder'],0,1)=='/')?explode('/', substr($_SESSION['folder'],1,-1)):explode('/', substr($_SESSION['folder'],2,-1)); 241 | $back = (substr($_SESSION['folder'],0,1)=='/')?'':substr($_SESSION['folder'],0,1); 242 | array_pop($last); 243 | foreach ($last as $value) { 244 | $back = $back.'/'.$value; 245 | } 246 | if($os=='windows')$qx="";else $qx=""; 247 | echo "$xx"; 248 | } 249 | for ($a=1; $a"; 253 | mainbottom(); 254 | } 255 | 256 | //获得创建日期等 257 | function gettime($filename) 258 | { 259 | return "修改时间:".date("Y-m-d H:i:s",filemtime($filename))."\n"."创建时间:".date("Y-m-d H:i:s",filectime($filename)); 260 | } 261 | 262 | function uCode($text) 263 | { 264 | return mb_convert_encoding($text,'UTF-8','GBK'); 265 | } 266 | 267 | function gCode($text) 268 | { 269 | return mb_convert_encoding($text,'GBK','UTF-8'); 270 | } 271 | 272 | // 计算文件夹大小的函数 273 | function dirSize($directoty){ 274 | $dir_size=0; 275 | $times=0; 276 | if($times<=2){ 277 | if($dir_handle=opendir($directoty)) 278 | { 279 | while($filename=readdir($dir_handle)){ 280 | $subFile=$directoty.DIRECTORY_SEPARATOR.$filename; 281 | if($filename=='.'||$filename=='..'){ 282 | continue; 283 | }elseif (is_dir($subFile)) 284 | { 285 | $times = $times + 1; 286 | $dir_size+=dirSize($subFile); 287 | }elseif (is_file($subFile)){ 288 | $dir_size+=filesize($subFile); 289 | } 290 | } 291 | closedir($dir_handle); 292 | } 293 | } 294 | return ($dir_size); 295 | } 296 | // 计算文件大小的函数 297 | function Size($size) { 298 | $sz = ' kMGTP'; 299 | $factor = floor((strlen($size) - 1) / 3); 300 | return ($size>=1024)?sprintf("%.2f", $size / pow(1024, $factor)) . @$sz[$factor]:$size; 301 | } 302 | 303 | function curl_get_contents($url) 304 | { 305 | $ch = curl_init(); 306 | curl_setopt($ch, CURLOPT_URL, $url); //设置访问的url地址 307 | //curl_setopt($ch,CURLOPT_HEADER,1); //是否显示头部信息 308 | curl_setopt($ch, CURLOPT_TIMEOUT, 60); //设置超时 309 | curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1); //跟踪301 310 | curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //返回结果 311 | $r = curl_exec($ch); 312 | curl_close($ch); 313 | return $r; 314 | } 315 | 316 | /****************************************************************/ 317 | /* function up() */ 318 | /* */ 319 | /* First step to Upload. */ 320 | /* User enters a file and the submits it to upload() */ 321 | /****************************************************************/ 322 | 323 | function up() { 324 | global $meurl, $folder, $content; 325 | maintop("上传"); 326 | 327 | echo "
    \n" 328 | ."
    本地上传
    根据服务器的设置,最大可上传".ini_get('upload_max_filesize')."的文件,且文件总数的最大值为".ini_get('max_file_uploads')."个
    \n" 329 | ."\n"; 330 | 331 | echo $content 332 | ."
    " 333 | ."



    \n" 336 | ."" 337 | ."\n"; 338 | echo "
    远程下载
    远程下载是什么意思?
    远程下载是从其他服务器获取文件并直接下载到当前服务器的一种功能。
    类似于SSH的Wget功能,免去我们下载再手动上传所浪费的时间。

    " 339 | ."
    " 340 | ."
    \n" 342 | ."" 343 | .""; 344 | 345 | mainbottom(); 346 | } 347 | 348 | 349 | /****************************************************************/ 350 | /* function yupload() */ 351 | /* */ 352 | /* Second step in wget file. */ 353 | /* Saves the file to the disk. */ 354 | /* Recieves $upfile from up() as the uploaded file. */ 355 | /****************************************************************/ 356 | 357 | function yupload($url, $folder, $unzip, $delzip) { 358 | global $meurl; 359 | if(empty($folder)){ 360 | $folder="./"; 361 | } 362 | $nfolder = $folder; 363 | $nurl = $url; 364 | $url = gCode($url); 365 | $folder = gCode($folder); 366 | if($url!==""){ 367 | ignore_user_abort(true); // 要求离线也可下载 368 | set_time_limit (24 * 60 * 60); // 设置超时时间 369 | if (!file_exists($folder)){ 370 | mkdir($folder, 0755); 371 | } 372 | $newfname = $folder . basename($url); // 取得文件的名称 373 | if(function_exists('curl_init')){ 374 | $file = curl_get_contents($url); 375 | file_put_contents($newfname,$file); 376 | }else{ 377 | $file = fopen ($url, "rb"); // 远程下载文件,二进制模式 378 | if ($file) { // 如果下载成功 379 | $newf = fopen ($newfname, "wb"); 380 | if ($newf) // 如果文件保存成功 381 | while (!feof($file)) { // 判断附件写入是否完整 382 | fwrite($newf, fread($file, 1024 * 8), 1024 * 8); // 没有写完就继续 383 | } 384 | } 385 | if ($file) { 386 | fclose($file); // 关闭远程文件 387 | } 388 | if ($newf) { 389 | fclose($newf); // 关闭本地文件 390 | } 391 | } 392 | maintop("远程上传"); 393 | echo "
    文件 ".basename($url)." 上传成功
    \n"; 394 | $end = explode('.', basename($url)); 395 | if((end($end)=="zip") && isset($unzip) && $unzip == "checkbox"){ 396 | if(class_exists('ZipArchive')){ 397 | echo "您可以 访问文件夹 或者 返回目录 或者 继续上传\n"; 398 | echo "
    '; 421 | }else{ 422 | echo('此服务器上的PHP不支持ZipArchive,无法解压文件!'); 423 | } 424 | }else{ 425 | echo "您可以 访问文件夹 或者 编辑文件 或者 返回目录 或者 继续上传\n"; 426 | } 427 | mainbottom(); 428 | return true; 429 | }else{ 430 | printerror ('文件地址不能为空。'); 431 | } 432 | } 433 | 434 | 435 | /****************************************************************/ 436 | /* function upload() */ 437 | /* */ 438 | /* Second step in upload. */ 439 | /* 将文件保存到磁盘中 */ 440 | /* Recieves $upfile from up() as the uploaded file. */ 441 | /****************************************************************/ 442 | 443 | function upload($upfile,$ndir,$unzip,$delzip) { 444 | global $meurl, $folder; 445 | if(empty($ndir)){ 446 | $ndir="./"; 447 | } 448 | $nfolder = $folder; 449 | $nndir = $ndir; 450 | $ndir = gCode($ndir); 451 | if (!$upfile) { 452 | printerror("您没有选择文件!"); 453 | exit; 454 | }elseif($upfile) { 455 | maintop("上传"); 456 | if (!file_exists($ndir)){ 457 | mkdir($ndir, 0755); 458 | } 459 | $i = 1; 460 | echo "\n"; 461 | echo ''; 498 | mainbottom(); 499 | }else{ 500 | printerror("您没有选择文件!"); 501 | } 502 | } 503 | 504 | /****************************************************************/ 505 | /* function unz() */ 506 | /* */ 507 | /* First step in unz. */ 508 | /* Prompts the user for confirmation. */ 509 | /* Recieves $dename and ask for deletion confirmation. */ 510 | /****************************************************************/ 511 | 512 | function unz($dename) { 513 | global $meurl, $folder, $content; 514 | if (!$dename == "") { 515 | if(class_exists('ZipArchive')){ 516 | maintop("解压"); 517 | echo "
    ".substr(sprintf('%o',fileperms($ufolder.$sstylesheet)), -3)."重命名
    {$stylesheet}".Size(dirSize($folder.$stylesheet))."打开查看
    {$stylesheet}".Size(filesize($ufolder.$sstylesheet))."提取
    {$stylesheet}".Size(filesize($ufolder.$sstylesheet))."查看
    {$stylesheet}".Size(filesize($ufolder.$sstylesheet))."编辑查看
    权限
    文件名大小打开重命名查看
    上级目录
    \n" 518 | ."
    解压 ".$folder.$dename."
    \n" 519 | ."
    解压到… " 520 | ."
    " 521 | .""; 540 | echo "\n" 541 | ."\n" 542 | ."\n" 543 | ."
    \n" 544 | ."
    \n"; 545 | mainbottom(); 546 | }else{ 547 | printerror("此服务器上的PHP不支持ZipArchive,无法解压文件!\n"); 548 | } 549 | }else{ 550 | home(); 551 | } 552 | } 553 | 554 | 555 | /****************************************************************/ 556 | /* function unzip() */ 557 | /* */ 558 | /* Second step in unzip. */ 559 | /****************************************************************/ 560 | function unzip($dename,$ndir,$del) { 561 | global $meurl, $folder; 562 | $nndir = $ndir; 563 | $nfolder = $folder; 564 | $ndename = $dename; 565 | $dename = gCode($dename); 566 | $folder = gCode($folder); 567 | $ndir = gCode($ndir); 568 | if (!$dename == "") { 569 | if (!file_exists($ndir)){ 570 | mkdir($ndir, 0755); 571 | } 572 | if(class_exists('ZipArchive')){ 573 | $zip = new ZipArchive(); 574 | if ($zip->open($folder.$dename) === TRUE) { 575 | maintop("解压"); 576 | if($zip->extractTo($ndir)){ 577 | echo '
    现在您可以 返回目录
    '; 578 | echo '\n"; 595 | mainbottom(); 596 | }else{ 597 | printerror('无法解压文件:'.$nfolder.$ndename); 598 | } 599 | }else{ 600 | printerror('此服务器上的PHP不支持ZipArchive,无法解压文件!'); 601 | } 602 | }else{ 603 | home(); 604 | } 605 | } 606 | 607 | 608 | /****************************************************************/ 609 | /* function delete() */ 610 | /* */ 611 | /* Second step in delete. */ 612 | /* Deletes the actual file from disk. */ 613 | /* Recieves $upfile from up() as the uploaded file. */ 614 | /****************************************************************/ 615 | 616 | function deltree($pathdir) 617 | { 618 | if(is_empty_dir($pathdir))//如果是空的 619 | { 620 | rmdir($pathdir);//直接删除 621 | } 622 | else 623 | {//否则读这个目录,除了.和..外 624 | $d=dir($pathdir); 625 | while($a=$d->read()) 626 | { 627 | if(is_file($pathdir.'/'.$a) && ($a!='.') && ($a!='..')){unlink($pathdir.'/'.$a);} 628 | //如果是文件就直接删除 629 | if(is_dir($pathdir.'/'.$a) && ($a!='.') && ($a!='..')) 630 | {//如果是目录 631 | if(!is_empty_dir($pathdir.'/'.$a))//是否为空 632 | {//如果不是,调用自身,不过是原来的路径+他下级的目录名 633 | deltree($pathdir.'/'.$a); 634 | } 635 | if(is_empty_dir($pathdir.'/'.$a)) 636 | {//如果是空就直接删除 637 | rmdir($pathdir.'/'.$a); 638 | } 639 | } 640 | } 641 | $d->close(); 642 | } 643 | } 644 | 645 | function is_empty_dir($pathdir) 646 | { 647 | //判断目录是否为空 648 | $d=opendir($pathdir); 649 | $i=0; 650 | while($a=readdir($d)){ 651 | $i++; 652 | } 653 | closedir($d); 654 | if($i>2){return false;} 655 | else return true; 656 | } 657 | 658 | 659 | /****************************************************************/ 660 | /* function edit() */ 661 | /* */ 662 | /* First step in edit. */ 663 | /* Reads the file from disk and displays it to be edited. */ 664 | /* Recieves $upfile from up() as the uploaded file. */ 665 | /****************************************************************/ 666 | 667 | function edit($fename) { 668 | global $meurl,$folder; 669 | $file = gCode($folder.$fename); 670 | if (file_exists($file)) { 671 | maintop("编辑"); 672 | $contents = file_get_contents($file); 673 | if(function_exists('mb_detect_encoding'))$encode = mb_detect_encoding($contents,array('ASCII','UTF-8','GBK','GB2312'));else $encode = 'UTF-8'; 674 | if($_REQUEST['encode']){$encode = $_REQUEST['encode'];} 675 | if($encode!="UTF-8" && !empty($encode))$contents = mb_convert_encoding($contents,"UTF-8",$encode); 676 | foreach(mb_list_encodings() as $key => $value){ 677 | if($key >= 19): 678 | $arr = array('EUC-CN' => 'GB2312', 679 | 'CP936' => 'GBK', 680 | 'SJIS-mac'=>'MacJapanese', 681 | 'SJIS-Mobile#DOCOMO'=>'SJIS-DOCOMO', 682 | 'SJIS-Mobile#KDDI'=>'SJIS-KDDI', 683 | 'SJIS-Mobile#SOFTBANK'=>'SJIS-SOFTBANK', 684 | 'UTF-8-Mobile#DOCOMO'=>'UTF-8-DOCOMO', 685 | 'UTF-8-Mobile#KDDI-B'=>'UTF-8-KDDI', 686 | 'UTF-8-Mobile#SOFTBANK'=>'UTF-8-SOFTBANK', 687 | 'ISO-2022-JP-MOBILE#KDDI'=>'ISO-2022-JP-KDDI' 688 | ); 689 | if(array_key_exists($value, $arr)) $value_text = $arr[$value]; else $value_text = $value; 690 | if($encode == $value) $list.="'; else $list.="'; 691 | endif; 692 | } 693 | echo "
    编辑文件 {$folder}{$fename}\n" 694 | ." » ' 697 | ."
    ' 700 | ."" 703 | ."
    \n" 704 | ."\n" 705 | ."\n" 706 | ."\n" 707 | ."\n"; 708 | mainbottom(); 709 | }else{ 710 | printerror("文件不存在!"); 711 | } 712 | } 713 | 714 | 715 | /****************************************************************/ 716 | /* function save() */ 717 | /* */ 718 | /* Second step in edit. */ 719 | /* Recieves $ncontent from edit() as the file content. */ 720 | /* Recieves $fename from edit() as the file name to modify. */ 721 | /****************************************************************/ 722 | 723 | function save($ncontent, $fename, $encode) { 724 | global $meurl,$folder; 725 | if (!$fename == "") { 726 | $file = gCode($folder.$fename); 727 | $ydata = $ncontent; 728 | if($encode!=="UTF-8" && $encode!=="ASCII")$ydata = mb_convert_encoding($ydata,$encode,"UTF-8"); 729 | if(file_put_contents($file, $ydata) or $ncontent=="") { 730 | maintop("编辑"); 731 | echo "
    文件 {$folder}{$fename} 保存成功!$encode
    \n"; 732 | echo "
    请选择 返回目录 或者 继续编辑
    \n"; 733 | $fp = null; 734 | mainbottom(); 735 | }else{ 736 | printerror("文件保存出错!"); 737 | } 738 | }else{ 739 | home(); 740 | } 741 | } 742 | 743 | /****************************************************************/ 744 | /* function cr() */ 745 | /* */ 746 | /* First step in create. */ 747 | /* Promts the user to a filename and file/directory switch. */ 748 | /****************************************************************/ 749 | 750 | function cr() { 751 | global $meurl, $folder; 752 | maintop("创建"); 753 | echo "
    \n" 754 | ."
    创建文件 或 目录


    \n" 755 | ."
    "; 756 | 757 | echo "
    \n" 759 | ."
    \n" 760 | ."\n" 761 | ."
    \n"; 762 | mainbottom(); 763 | } 764 | 765 | 766 | /****************************************************************/ 767 | /* function create() */ 768 | /* */ 769 | /* Second step in create. */ 770 | /* Creates the file/directoy on disk. */ 771 | /* Recieves $nfname from cr() as the filename. */ 772 | /* Recieves $infolder from cr() to determine file trpe. */ 773 | /****************************************************************/ 774 | 775 | function create($nfname, $isfolder, $ndir) { 776 | global $meurl, $folder; 777 | if (!$nfname == "") { 778 | $ndir = gCode($ndir); 779 | $nfname = gCode($nfname); 780 | if ($isfolder == 1) { 781 | if(mkdir($ndir."/".$nfname, 0755)) { 782 | $ndir = uCode($ndir); 783 | $nfname = uCode($nfname); 784 | maintop("创建"); 785 | echo "
    您的目录".$ndir.$nfname."/ 已经成功被创建。
    \n" 786 | ."请选择 打开文件夹 或者 返回目录\n"; 787 | echo "
    "; 788 | mainbottom(); 789 | }else{ 790 | $ndir = uCode($ndir); 791 | $nfname = uCode($nfname); 792 | printerror("您的目录 ".$ndir.$nfname." 不能被创建。请检查您的目录权限是否已经被设置为可写 或者 目录是否已经存在\n"); 793 | } 794 | }else{ 795 | if(fopen($ndir."/".$nfname, "w")) { 796 | $ndir = uCode($ndir); 797 | $nfname = uCode($nfname); 798 | maintop("创建"); 799 | echo "
    您的文件, ".$ndir.$nfname." 已经成功被创建
    \n" 800 | ."编辑文件 或者是 返回目录\n"; 801 | echo "
    "; 802 | mainbottom(); 803 | }else{ 804 | $ndir = uCode($ndir); 805 | $nfname = uCode($nfname); 806 | printerror("您的文件 ".$ndir.$nfname." 不能被创建。请检查您的目录权限是否已经被设置为可写 或者 文件是否已经存在\n"); 807 | } 808 | } 809 | }else{ 810 | cr(); 811 | } 812 | } 813 | 814 | 815 | /****************************************************************/ 816 | /* function ren() */ 817 | /* */ 818 | /* First step in rename. */ 819 | /* Promts the user for new filename. */ 820 | /* Globals $file and $folder for filename. */ 821 | /****************************************************************/ 822 | 823 | function ren($file) { 824 | global $meurl,$folder,$ufolder; 825 | $ufile = $file; 826 | if (!$file == "") { 827 | maintop("重命名"); 828 | echo "
    \n" 829 | ."
    重命名 ".$ufolder.$ufile.'
    '; 830 | echo "
    \n" 831 | ."\n" 832 | ."新文件名:
    \n" 833 | ."
    \n"; 834 | mainbottom(); 835 | }else{ 836 | home(); 837 | } 838 | } 839 | 840 | 841 | /****************************************************************/ 842 | /* function renam() */ 843 | /* */ 844 | /* Second step in rename. */ 845 | /* Rename the specified file. */ 846 | /* Recieves $rename from ren() as the old filename. */ 847 | /* Recieves $nrename from ren() as the new filename. */ 848 | /****************************************************************/ 849 | 850 | function renam($rename, $nrename, $folder) { 851 | global $meurl,$folder; 852 | if (!$rename == "") { 853 | $loc1 = gCode("$folder".$rename); 854 | $loc2 = gCode("$folder".$nrename); 855 | if(rename($loc1,$loc2)) { 856 | maintop("重命名"); 857 | echo "
    文件 ".$folder.$rename." 已被重命名成 ".$folder.$nrename."
    \n" 858 | ."
    请选择 返回目录 或者 编辑新文件
    \n"; 859 | mainbottom(); 860 | }else{ 861 | printerror("重命名出错!"); 862 | } 863 | }else{ 864 | home(); 865 | } 866 | } 867 | 868 | /****************************************************************/ 869 | /* function movall */ 870 | /* */ 871 | /* 批量移动 2014-4-12 by jooies */ 872 | /****************************************************************/ 873 | 874 | function movall($file, $ndir, $folder) { 875 | global $meurl,$folder; 876 | if (!$file == "") { 877 | maintop("批量移动"); 878 | echo "
    "; 879 | $arr = str_split($ndir); 880 | if($arr[count($arr)-1]!=='/'){ 881 | $ndir .= '/'; 882 | } 883 | $nndir = $ndir; 884 | $nfolder = $folder; 885 | $file = gCode($file); 886 | $ndir = gCode($ndir); 887 | $folder = gCode($folder); 888 | if (!file_exists($ndir)){ 889 | mkdir($ndir, 0755); 890 | } 891 | $file = explode(',',$file); 892 | echo "您可以 前往文件夹查看文件 或者 返回目录
    \n"; 893 | foreach ($file as $v) { 894 | if (file_exists($ndir.$v)){ 895 | if (rename($folder.$v, $ndir.$v.".move")){ 896 | $v = iconv("GBK", "UTF-8",$v); 897 | echo $nndir.$v." 文件已存在,自动更名为 {$nndir}{$v}.move
    "; 898 | }else{ 899 | $v = iconv("GBK", "UTF-8",$v); 900 | echo "无法移动 ".$nfolder.$v.',请检查文件权限
    '; 901 | } 902 | }elseif (rename($folder.$v, $ndir.$v)){ 903 | $v = iconv("GBK", "UTF-8",$v); 904 | echo $nfolder.$v." 已经成功移动到 ".$nndir.$v.'
    '; 905 | }else{ 906 | $v = iconv("GBK", "UTF-8",$v); 907 | echo "无法移动 ".$nfolder.$v.',请检查文件权限或文件是否存在
    '; 908 | } 909 | } 910 | echo "
    "; 911 | mainbottom(); 912 | }else{ 913 | home(); 914 | } 915 | } 916 | 917 | /****************************************************************/ 918 | /* function tocopy */ 919 | /* */ 920 | /* 批量复制 2014-4-19 by jooies */ 921 | /****************************************************************/ 922 | 923 | function tocopy($file, $ndir, $folder) { 924 | global $meurl,$folder; 925 | if (!$file == "") { 926 | maintop("复制"); 927 | echo "
    "; 928 | $nndir = $ndir; 929 | $nfolder = $folder; 930 | $file = gCode($file); 931 | $ndir = gCode($ndir); 932 | $folder = gCode($folder); 933 | if (!file_exists($ndir)){ 934 | mkdir($ndir, 0755); 935 | } 936 | $file = explode(',',$file); 937 | echo "您可以 前往文件夹查看文件 或者 返回目录
    \n"; 938 | foreach ($file as $v) { 939 | if (file_exists($ndir.$v)){ 940 | if (copy($folder.$v, $ndir.$v.'.copy')){ 941 | $v = iconv("GBK", "UTF-8",$v); 942 | echo "{$nndir}{$v} 文件已存在,自动更名为 {$nfolder}{$v}.copy
    "; 943 | }else{ 944 | $v = iconv("GBK", "UTF-8",$v); 945 | echo "无法复制 {$nfolder}{$v},请检查文件权限
    "; 946 | } 947 | }elseif (copy($folder.$v, $ndir.$v)){ 948 | $v = iconv("GBK", "UTF-8",$v); 949 | echo $nfolder.$v." 已经成功复制到 ".$nndir.$v.'
    '; 950 | }else{ 951 | $v = iconv("GBK", "UTF-8",$v); 952 | echo "无法复制 ".$nfolder.$v.',请检查文件权限
    '; 953 | } 954 | } 955 | echo "
    "; 956 | mainbottom(); 957 | }else{ 958 | home(); 959 | } 960 | } 961 | 962 | 963 | /****************************************************************/ 964 | /* function logout() */ 965 | /* */ 966 | /* Logs the user out and kills cookies */ 967 | /****************************************************************/ 968 | 969 | function logout() { 970 | global $meurl; 971 | setcookie("user","",time()-60*60*24*1); 972 | setcookie("pass","",time()-60*60*24*1); 973 | 974 | maintop("注销",false); 975 | echo "
    注销成功!
    " 976 | ."点击这里重新登录"; 977 | mainbottom(); 978 | } 979 | 980 | 981 | /****************************************************************/ 982 | /* function mainbottom() */ 983 | /* */ 984 | /* 页面底部的版权声明 */ 985 | /****************************************************************/ 986 | 987 | function mainbottom() { 988 | echo "
    " 989 | ."FileBox Version 1.8.1.2
    \n" 990 | ."\n"; 991 | exit; 992 | } 993 | 994 | 995 | /****************************************************************/ 996 | /* function sqlb() */ 997 | /* */ 998 | /* First step to backup sql. */ 999 | /****************************************************************/ 1000 | 1001 | function sqlb() { 1002 | global $meurl; 1003 | maintop("数据库备份"); 1004 | echo "
    这将进行数据库导出并压缩成mysql.zip的动作! 如存在该文件,该文件将被覆盖!
    \n



    \n"; 1005 | mainbottom(); 1006 | } 1007 | 1008 | 1009 | /****************************************************************/ 1010 | /* function sqlbackup() */ 1011 | /* */ 1012 | /* Second step in backup sql. */ 1013 | /****************************************************************/ 1014 | 1015 | function sqlbackup($ip,$sql,$username,$password) { 1016 | global $meurl; 1017 | if(class_exists('ZipArchive')){ 1018 | maintop("MySQL备份"); 1019 | $database=$sql;//数据库名 1020 | $options=array( 1021 | 'hostname' => $ip,//ip地址 1022 | 'charset' => 'utf8',//编码 1023 | 'filename' => $database.'.sql',//文件名 1024 | 'username' => $username, 1025 | 'password' => $password 1026 | ); 1027 | $mysql = mysqli_connect($options['hostname'],$options['username'],$options['password'],$database)or die("不能连接数据库!".mysqli_connect_error()); 1028 | mysqli_query($mysql,"SET NAMES '{$options['charset']}'"); 1029 | $tables = list_tables($database,$mysql); 1030 | $filename = sprintf($options['filename'],$database); 1031 | $fp = fopen($filename, 'w'); 1032 | foreach ($tables as $table) { 1033 | dump_table($table, $fp,$mysql); 1034 | } 1035 | fclose($fp); 1036 | mysqli_close($mysql); 1037 | //压缩sql文件 1038 | if (file_exists('mysql.zip')) { 1039 | unlink('mysql.zip'); 1040 | } 1041 | $file_name=$options['filename']; 1042 | $zip = new ZipArchive; 1043 | $res = $zip->open('mysql.zip', ZipArchive::CREATE); 1044 | if ($res === TRUE) { 1045 | $zip->addfile($file_name); 1046 | $zip->close(); 1047 | //删除服务器上的sql文件 1048 | unlink($file_name); 1049 | echo '
    数据库导出并压缩完成!' 1050 | ." 返回目录
    \n"; 1051 | }else{ 1052 | printerror('无法压缩文件!'); 1053 | } 1054 | exit; 1055 | mainbottom(); 1056 | }else{ 1057 | printerror('此服务器上的PHP不支持ZipArchive,无法压缩文件!'); 1058 | } 1059 | } 1060 | 1061 | function list_tables($database,$mysql) 1062 | { 1063 | $rs = mysqli_query($mysql,"SHOW TABLES FROM $database"); 1064 | $tables = array(); 1065 | while ($row = mysqli_fetch_row($rs)) { 1066 | $tables[] = $row[0]; 1067 | } 1068 | mysqli_free_result($rs); 1069 | return $tables; 1070 | } 1071 | 1072 | //导出数据库 1073 | function dump_table($table, $fp = null,$mysql) 1074 | { 1075 | $need_close = false; 1076 | if (is_null($fp)) { 1077 | $fp = fopen($table . '.sql', 'w'); 1078 | $need_close = true; 1079 | } 1080 | $a=mysqli_query($mysql,"show create table `{$table}`"); 1081 | $row=mysqli_fetch_assoc($a);fwrite($fp,$row['Create Table'].';');//导出表结构 1082 | $rs = mysqli_query($mysql,"SELECT * FROM `{$table}`"); 1083 | while ($row = mysqli_fetch_row($rs)) { 1084 | fwrite($fp, get_insert_sql($table, $row)); 1085 | } 1086 | mysqli_free_result($rs); 1087 | if ($need_close) { 1088 | fclose($fp); 1089 | } 1090 | } 1091 | 1092 | //导出表数据 1093 | function get_insert_sql($table, $row) 1094 | { 1095 | $sql = "INSERT INTO `{$table}` VALUES ("; 1096 | $values = array(); 1097 | foreach ($row as $value) { 1098 | $values[] = "'" . mysql_real_escape_string($value) . "'"; 1099 | } 1100 | $sql .= implode(', ', $values) . ");"; 1101 | return $sql; 1102 | } 1103 | 1104 | /****************************************************************/ 1105 | /* function ftpa() */ 1106 | /* */ 1107 | /* First step to backup sql. */ 1108 | /****************************************************************/ 1109 | 1110 | function ftpa() { 1111 | global $meurl; 1112 | maintop("FTP备份"); 1113 | echo "
    这将把文件远程上传到其他ftp!如目录存在该文件,文件将被覆盖!
    \n




    \n"; 1114 | mainbottom(); 1115 | } 1116 | 1117 | /****************************************************************/ 1118 | /* function ftpall() */ 1119 | /* */ 1120 | /* Second step in backup sql. */ 1121 | /****************************************************************/ 1122 | 1123 | function ftpall($ftpip,$ftpuser,$ftppass,$ftpdir,$ftpfile,$del) { 1124 | global $meurl; 1125 | $ftpfile = gCode($ftpfile); 1126 | $ftpip=explode(':', $ftpip); 1127 | $ftp_server=$ftpip['0'];//服务器 1128 | $ftp_user_name=$ftpuser;//用户名 1129 | $ftp_user_pass=$ftppass;//密码 1130 | if(empty($ftpip['1'])){ 1131 | $ftp_port='21'; 1132 | }else{ 1133 | $ftp_port=$ftpip['1'];//端口 1134 | } 1135 | $ftp_put_dir=$ftpdir;//上传目录 1136 | $ffile=$ftpfile;//上传文件 1137 | 1138 | $ftp_conn_id = ftp_connect($ftp_server,$ftp_port); 1139 | $ftp_login_result = ftp_login($ftp_conn_id, $ftp_user_name, $ftp_user_pass); 1140 | 1141 | if((!$ftp_conn_id) || (!$ftp_login_result)) { 1142 | printerror('连接到ftp服务器失败'); 1143 | exit; 1144 | }else{ 1145 | ftp_pasv ($ftp_conn_id,true); //返回一下模式,这句很奇怪,有些ftp服务器一定需要执行这句 1146 | ftp_chdir($ftp_conn_id, $ftp_put_dir); 1147 | $ffile=explode(',', $ffile); 1148 | foreach ($ffile as $v) { 1149 | $ftp_upload = ftp_put($ftp_conn_id,$v,$v, FTP_BINARY); 1150 | if ($del == 'del') { 1151 | unlink('./'.$v); 1152 | } 1153 | } 1154 | ftp_close($ftp_conn_id); //断开 1155 | } 1156 | maintop("FTP上传"); 1157 | echo "
    "; 1158 | $ftpfile = uCode($ftpfile); 1159 | echo "文件 ".$ftpfile." 上传成功
    \n" 1160 | ." 返回目录\n"; 1161 | echo "
    "; 1162 | mainbottom(); 1163 | } 1164 | 1165 | 1166 | /****************************************************************/ 1167 | /* function printerror() */ 1168 | /* */ 1169 | /* 用于显示错误信息的函数 */ 1170 | /* $error为显示的提示 */ 1171 | /****************************************************************/ 1172 | 1173 | function printerror($error) { 1174 | maintop("错误"); 1175 | echo "
    错误信息如下:
    \n".$error."\n 返回上一步
    "; 1176 | mainbottom(); 1177 | } 1178 | 1179 | /****************************************************************/ 1180 | /* function deleteall() */ 1181 | /* */ 1182 | /* 2014-3-9 Add by Jooies */ 1183 | /* 实现文件的批量删除功能 */ 1184 | /****************************************************************/ 1185 | 1186 | function deleteall($dename) { 1187 | if (!$dename == "") { 1188 | $udename = $dename; 1189 | $dename = gCode($dename); 1190 | if (is_dir($dename)) { 1191 | if(is_empty_dir($dename)){ 1192 | rmdir($dename); 1193 | echo $udename." 已经被删除\n"; 1194 | }else{ 1195 | deltree($dename); 1196 | rmdir($dename); 1197 | echo $udename." 已经被删除\n"; 1198 | } 1199 | }else{ 1200 | if(unlink($dename)) { 1201 | echo $udename." 已经被删除\n"; 1202 | }else{ 1203 | echo("无法删除文件:$udename 。\n参考信息\n1.文件不存在\n2.文件正在执行\n"); 1204 | } 1205 | } 1206 | } 1207 | } 1208 | 1209 | switch($action) {//$action 为批量操作 1210 | case "删除": 1211 | if(isset($_POST['select_item'])){ 1212 | maintop("删除"); 1213 | echo "
    您可以 返回目录
    \n"; 1214 | echo ''; 1226 | mainbottom(); 1227 | }else{ 1228 | printerror("您没有选择文件"); 1229 | } 1230 | break; 1231 | 1232 | case "移动": 1233 | if(isset($_POST['select_item'])){ 1234 | maintop("批量移动"); 1235 | $file = ''; 1236 | if($_POST['select_item']['d']){ 1237 | foreach($_POST['select_item']['d'] as $key => $val){ 1238 | $file = $file.$key.','; 1239 | } 1240 | } 1241 | if($_POST['select_item']['f']){ 1242 | foreach($_POST['select_item']['f'] as $key => $val){ 1243 | $file = $file.$key.','; 1244 | } 1245 | } 1246 | $file = substr($file,0,-1); 1247 | echo "
    "; 1248 | echo '
    移动文件
    您将把下列文件移动到:' 1249 | ."\n" 1250 | ."
    "; 1251 | echo "\n"; 1252 | mainbottom(); 1253 | }else{ 1254 | printerror("您没有选择文件"); 1255 | } 1256 | break; 1257 | 1258 | case "复制": 1259 | if(isset($_POST['select_item'])){ 1260 | maintop("复制"); 1261 | $file = ''; 1262 | if($_POST['select_item']['d']){ 1263 | foreach($_POST['select_item']['d'] as $key => $val){ 1264 | $file = $file.$key.','; 1265 | } 1266 | } 1267 | if($_POST['select_item']['f']){ 1268 | foreach($_POST['select_item']['f'] as $key => $val){ 1269 | $file = $file.$key.','; 1270 | } 1271 | } 1272 | $file = substr($file,0,-1); 1273 | echo ""; 1274 | echo '
    复制文件
    您将把下列文件复制到:' 1275 | ."\n" 1276 | ."
    "; 1277 | echo "\n"; 1278 | mainbottom(); 1279 | }else{ 1280 | printerror("您没有选择文件"); 1281 | } 1282 | break; 1283 | 1284 | case "压缩": 1285 | if(isset($_POST['select_item'])){ 1286 | if(class_exists('ZipArchive')){ 1287 | maintop("目录压缩"); 1288 | $time = $_SERVER['REQUEST_TIME']; 1289 | echo "
    您可以 查看文件夹 或者 下载文件 或者 返回目录
    "; 1290 | echo '\n"; 1341 | }else{ 1342 | echo '压缩失败!' 1343 | ."\n"; 1344 | } 1345 | mainbottom(); 1346 | }else{ 1347 | printerror('此服务器上的PHP不支持ZipArchive,无法压缩文件!'); 1348 | } 1349 | }else{ 1350 | printerror("您没有选择文件"); 1351 | } 1352 | break; 1353 | 1354 | case "权限": 1355 | if($os != 'windows'){ 1356 | if(isset($_POST['select_item'])){ 1357 | maintop("修改权限"); 1358 | echo '
    '; 1359 | $chmod = octdec($_REQUEST['chmod']); 1360 | function ChmodMine($file, $chmod) 1361 | { 1362 | $nfile = $file; 1363 | $file = gCode($file); 1364 | if(is_file($file)){ 1365 | if(chmod($file, $chmod)){ 1366 | echo '文件'.$nfile.' 权限修改成功
    '; 1367 | }else{ 1368 | echo '文件'.$nfile.' 权限修改失败
    '; 1369 | } 1370 | }elseif(is_dir($file)){ 1371 | if(chmod($file, $chmod)){ 1372 | echo '文件夹'.$nfile.' 权限修改成功
    '; 1373 | }else{ 1374 | echo '文件夹'.$nfile.' 权限修改失败
    '; 1375 | } 1376 | $foldersAndFiles = scandir($file); 1377 | $entries = array_slice($foldersAndFiles, 2); 1378 | foreach($entries as $entry){ 1379 | $nentry = iconv("GBK", "UTF-8",$entry); 1380 | ChmodMine($nfile.'/'.$nentry, $chmod); 1381 | } 1382 | }else{ 1383 | echo ''.$nfile.' 文件不存在!
    '; 1384 | } 1385 | } 1386 | if($_POST['select_item']['d']){ 1387 | foreach($_POST['select_item']['d'] as $val){ 1388 | ChmodMine($val,$chmod); 1389 | } 1390 | } 1391 | if($_POST['select_item']['f']){ 1392 | foreach($_POST['select_item']['f'] as $val){ 1393 | ChmodMine($val,$chmod); 1394 | } 1395 | } 1396 | echo "返回目录\n"; 1397 | echo "
    "; 1398 | mainbottom(); 1399 | }else{ 1400 | printerror("您没有选择文件"); 1401 | } 1402 | }else{printerror("Windows系统无法修改权限。");} 1403 | break; 1404 | 1405 | } 1406 | 1407 | /****************************************************************/ 1408 | /* function switch() */ 1409 | /* */ 1410 | /* Switches functions. */ 1411 | /* Recieves $op() and switches to it *. 1412 | /****************************************************************/ 1413 | 1414 | switch($op) { 1415 | 1416 | case "home": 1417 | home(); 1418 | break; 1419 | 1420 | case "up": 1421 | up(); 1422 | break; 1423 | 1424 | case "yupload": 1425 | if(!isset($_REQUEST['url'])){ 1426 | printerror('您没有输入文件地址!'); 1427 | }elseif(isset($_REQUEST['ndir'])){ 1428 | yupload($_REQUEST['url'], $_REQUEST['ndir'], $_REQUEST['unzip'] ,$_REQUEST['delzip']); 1429 | }else{ 1430 | yupload($_REQUEST['url'], './', $_REQUEST['unzip'] ,$_REQUEST['delzip']); 1431 | } 1432 | break; 1433 | 1434 | case "upload": 1435 | if(!isset($_FILES['upfile'])){ 1436 | printerror('您没有选择文件!'); 1437 | }elseif(isset($_REQUEST['ndir'])){ 1438 | upload($_FILES['upfile'], $_REQUEST['ndir'], $_REQUEST['unzip'] ,$_REQUEST['delzip']); 1439 | }else{ 1440 | upload($_FILES['upfile'], './', $_REQUEST['unzip'] ,$_REQUEST['delzip']); 1441 | } 1442 | break; 1443 | 1444 | case "unz": 1445 | unz($_REQUEST['dename']); 1446 | break; 1447 | 1448 | case "unzip": 1449 | unzip($_REQUEST['dename'],$_REQUEST['ndir'],$_REQUEST['del']); 1450 | break; 1451 | 1452 | case "sqlb": 1453 | sqlb(); 1454 | break; 1455 | 1456 | case "sqlbackup": 1457 | sqlbackup($_POST['ip'], $_POST['sql'], $_POST['username'], $_POST['password']); 1458 | break; 1459 | 1460 | case "ftpa": 1461 | ftpa(); 1462 | break; 1463 | 1464 | case "ftpall": 1465 | ftpall($_POST['ftpip'], $_POST['ftpuser'], $_POST['ftppass'], $_POST['goto'], $_POST['ftpfile'], $_POST['del']); 1466 | break; 1467 | 1468 | case "edit": 1469 | edit($_REQUEST['fename']); 1470 | break; 1471 | 1472 | case "save": 1473 | save($_REQUEST['ncontent'], $_REQUEST['fename'], $_REQUEST['encode']); 1474 | break; 1475 | 1476 | case "cr": 1477 | cr(); 1478 | break; 1479 | 1480 | case "create": 1481 | create($_REQUEST['nfname'], $_REQUEST['isfolder'], $_REQUEST['ndir']); 1482 | break; 1483 | 1484 | case "ren": 1485 | ren($_REQUEST['file']); 1486 | break; 1487 | 1488 | case "rename": 1489 | renam($_REQUEST['rename'], $_REQUEST['nrename'], $folder); 1490 | break; 1491 | 1492 | case "movall": 1493 | movall($_REQUEST['file'], $_REQUEST['ndir'], $folder); 1494 | break; 1495 | 1496 | case "copy": 1497 | tocopy($_REQUEST['file'], $_REQUEST['ndir'], $folder); 1498 | break; 1499 | 1500 | case "printerror": 1501 | printerror($error); 1502 | break; 1503 | 1504 | case "logout": 1505 | logout(); 1506 | break; 1507 | 1508 | case "z": 1509 | z($_REQUEST['dename'],$_REQUEST['folder']); 1510 | break; 1511 | 1512 | case "zip": 1513 | zip($_REQUEST['dename'],$_REQUEST['folder']); 1514 | break; 1515 | 1516 | default: 1517 | home(); 1518 | break; 1519 | } 1520 | 1521 | ?> -------------------------------------------------------------------------------- /filebox.php: -------------------------------------------------------------------------------- 1 | 6 | * @copyright Copyright (c) 2014-2016 7 | * @since Version 1.10.0.2 8 | * 9 | * 设置说明 10 | * $sitetitle - 标题名称 11 | * $user - 用户名 12 | * $pass - 密码 13 | * $safe_num - 设置多少次后禁止登陆,为0则不限制,建议为3-5 14 | * $mail - 若有恶意登录,会发邮件到这个邮箱,前提是mail()函数可用! 15 | */ 16 | header('Content-Type: text/html; charset=utf-8'); 17 | date_default_timezone_set('Asia/Shanghai'); 18 | session_start(); 19 | error_reporting(1); 20 | $sitetitle = 'FileBox'; 21 | $user = 'filebox'; 22 | $pass = 'filebox'; 23 | $safe_num = 0;//设置多少次后禁止登陆,为0则不限制,建议为3-5 24 | $mail = 'email@qq.com';//若有恶意登录,会发邮件到这个邮箱,前提是mail()函数可用! 25 | $meurl = $_SERVER['PHP_SELF']; 26 | $os = (DIRECTORY_SEPARATOR=='\\')?"windows":'linux'; 27 | $op = (isset($_REQUEST['op']))?htmlentities($_REQUEST['op']):'home'; 28 | $action = (isset($_REQUEST['action']))?htmlspecialchars($_REQUEST['action']):''; 29 | $folder = (isset($_REQUEST['folder']))?htmlspecialchars($_REQUEST['folder']):'./'; 30 | $arr = str_split($folder); 31 | if($arr[count($arr)-1]!=='/')$folder .= '/'; 32 | while(preg_match('/\.\.\//',$folder))$folder = preg_replace('/\.\.\//','/',$folder); 33 | while(preg_match('/\/\//',$folder))$folder = preg_replace('/\/\//','/',$folder); 34 | if($folder == '')$folder = "./"; 35 | $ufolder = $folder; 36 | if($_SESSION['error'] > $safe_num && $safe_num !== 0)printerror('您已经被限制登陆!'); 37 | 38 | /****************************************************************/ 39 | /* 用户登录函数 */ 40 | /* */ 41 | /* 需要浏览器开启Cookies才可使用 */ 42 | /****************************************************************/ 43 | 44 | if ($_COOKIE['user'] != $user || $_COOKIE['pass'] != md5($pass)) { 45 | if (htmlspecialchars($_REQUEST['user']) == $user && htmlspecialchars($_REQUEST['pass']) == $pass) { 46 | setcookie('user',$user,time()+60*60*24*1); 47 | setcookie('pass',md5($pass),time()+60*60*24*1); 48 | }else{ 49 | if (htmlspecialchars($_REQUEST['user']) == $user || htmlspecialchars($_REQUEST['pass'])) $er = true; 50 | login($er); 51 | exit; 52 | } 53 | } 54 | 55 | 56 | /****************************************************************/ 57 | /* function maintop() */ 58 | /* */ 59 | /* 控制站点的样式和头部内容 */ 60 | /* $title -> 顶部标题 $showtop -> 是否显示头部菜单 */ 61 | /****************************************************************/ 62 | 63 | function maintop($title,$showtop = true) { 64 | global $meurl,$sitetitle,$op; 65 | echo "\n\n\n\n" 66 | ."$sitetitle - $title\n" 67 | ."\n" 68 | ."\n" 69 | ."\n"; 70 | $back=($op!=='home')?$back = "
  • 返回 ".$_SESSION['folder']."
  • \n":$back = ''; 71 | echo "

    $sitetitle

    \n"; 72 | if ($showtop) {//头部菜单内容 73 | if($op=='up'||$op=='upload'||$op=='yupload')$up = "class='curr'";if($op=='home'||$op =='edit'||$op =='ren'||$op =='unz')$home = "class='curr'";if($op=='cr'||$op=='create')$cr = "class='curr'";if($op=='sqlb'||$op=='sqlbackup')$sqlb = "class='curr'";if($op=='ftpa'||$op=='ftpall')$ftpa = "class='curr'"; 74 | echo ""; 82 | } 83 | echo "
    \n"; 84 | } 85 | 86 | 87 | /****************************************************************/ 88 | /* function login() */ 89 | /* */ 90 | /* 登录验证 $user and md5($pass) */ 91 | /* 需要浏览器支持Cookie */ 92 | /****************************************************************/ 93 | 94 | function login($er=false) { 95 | global $meurl,$op,$safe_num,$mail; 96 | setcookie("user","",time()-60*60*24*1); 97 | setcookie("pass","",time()-60*60*24*1); 98 | maintop("登录",false); 99 | if ($er) { 100 | if (isset($_SESSION['error'])){ 101 | $_SESSION['error']++; 102 | if($_SESSION['error'] > $safe_num && $safe_num !== 0){ 103 | mail($mail,'FileBox文件管理器提醒:文件被恶意登录!','该提醒来自FileBox:
    登录者IP为:'.$_SERVER['REMOTE_ADDR'],'From: '); 104 | echo ('ERROR: 您已经被限制登陆!'); 105 | exit; 106 | } 107 | }else{ 108 | $_SESSION['error'] = 1; 109 | } 110 | echo "用户名或密码错误!
    \n"; 111 | } 112 | echo "\n" 113 | ."\n" 114 | ."\n" 115 | ."\n" 116 | ."\n"; 117 | mainbottom(); 118 | } 119 | 120 | 121 | /****************************************************************/ 122 | /* function home() */ 123 | /* */ 124 | /* Main function that displays contents of folders. */ 125 | /****************************************************************/ 126 | 127 | function home() { 128 | global $os, $meurl ,$folder, $ufolder; 129 | 130 | $content1 = ""; 131 | $content2 = ""; 132 | 133 | $folder = gCode($folder); 134 | if(opendir($folder)){$style = opendir($folder);}else{printerror("目录不存在!\n");exit;} 135 | $a=1;$b=1; 136 | 137 | if($folder)$_SESSION['folder']=$ufolder; 138 | 139 | maintop("主页"); 140 | echo ''; 141 | echo "
    \n"; 142 | while($stylesheet = readdir($style)) { 143 | $ufolder = $folder; 144 | $sstylesheet = $stylesheet; 145 | if($os!=='windows'):$qx = "";$xx='';else:$qx = '';$xx='';endif; 146 | if ($stylesheet !== "." && $stylesheet !== ".." ) { 147 | $stylesheet = uCode($stylesheet); 148 | $folder = uCode($folder); 149 | $trontd = "\n"; 151 | if (is_dir(gCode($folder.$stylesheet)) && is_readable(gCode($folder.$stylesheet))) { 152 | $content1[$a] = "$trontd\n" 153 | ."\n" 154 | ."" 155 | ."\n" 156 | .$rename 157 | ."\n" 158 | .$qx."\n"; 159 | $a++; 160 | $folder = gCode($folder); 161 | }elseif(!is_dir(gCode($folder.$stylesheet)) && is_readable(gCode($folder.$stylesheet))){ 162 | $arr = explode('.',$folder.$stylesheet); 163 | $arr = end($arr); 164 | if($arr == 'zip'){#判断是否是zip文件 165 | $filesizeme = filesize($ufolder.$sstylesheet); 166 | $content2[$b] = "$trontd\n" 167 | ."\n" 168 | ."" 169 | ."\n" 170 | .$rename 171 | ."\n" 172 | .$qx."\n"; 173 | }elseif($arr == 'gif'||$arr == 'jpg'||$arr == 'png'||$arr == 'bmp'||$arr == 'png5'||$arr == 'psd'||$arr == 'webp'||$arr == 'gz'||$arr == 'gzip'){ 174 | $filesizeme = filesize($ufolder.$sstylesheet); 175 | $content2[$b] = "$trontd\n" 176 | ."\n" 177 | ."" 178 | ."\n" 179 | .$rename 180 | ."\n" 181 | .$qx."\n"; 182 | }else{ 183 | $filesizeme = filesize($ufolder.$sstylesheet); 184 | $content2[$b] = "$trontd\n" 185 | ."\n" 186 | ."" 187 | ."\n" 188 | .$rename 189 | ."\n" 190 | .$qx."\n"; 191 | } 192 | $b++; 193 | $folder = gCode($folder); 194 | } 195 | } 196 | } 197 | closedir($style); 198 | 199 | $lu = explode('/', $_SESSION['folder']); 200 | array_pop($lu); 201 | $u = ''; 202 | echo '
    '; 203 | foreach ($lu as $v) { 204 | $u = $u.$v.'/'; 205 | if($v=='.'){$v='主页';}elseif($v==''){$v='根目录';} 206 | echo ''.$v.' » '; 207 | } 208 | echo "文件\n" 209 | ."",$a-1," 个文件夹 ",$b-1," 个文件
    " 210 | ."
    "; 211 | 212 | if($os!=='windows'):$qx = "\n";else:$qx = '';endif; 213 | echo "" 214 | ."" 215 | ."\n" 216 | ."\n" 217 | ."\n" 218 | ."\n" 219 | ."\n" 220 | ."\n" 221 | .$qx 222 | .""; 223 | if($_SESSION['folder']!="./" and $_SESSION['folder']!="/"){ 224 | $last = (substr($_SESSION['folder'],0,1)=='/')?explode('/', substr($_SESSION['folder'],1,-1)):explode('/', substr($_SESSION['folder'],2,-1)); 225 | $back = (substr($_SESSION['folder'],0,1)=='/')?'':substr($_SESSION['folder'],0,1); 226 | array_pop($last); 227 | foreach ($last as $value) { 228 | $back = $back.'/'.$value; 229 | } 230 | if($os=='windows')$qx="";else $qx=""; 231 | echo "$xx"; 232 | } 233 | for ($a=1; $a"; 236 | 237 | echo "
    ".substr(sprintf('%o',fileperms($ufolder.$sstylesheet)), -3)."
    "; 150 | $rename = "💽重命名{$stylesheet}".Size(dirSize($folder.$stylesheet))."打开🔍查看
    {$stylesheet}".Size($filesizeme)."🎁提取
    {$stylesheet}".Size($filesizeme)."🔍查看
    {$stylesheet}".Size(filesize($ufolder.$sstylesheet))."📝编辑🔍查看
    权限
    文件名 / 类型 / 时间
    大小打开重命名查看
    上级目录
    "; 238 | mainbottom(); 239 | } 240 | 241 | function gettime($filename){return "修改时间:".date("Y-m-d H:i:s",filemtime($filename))."\n"."创建时间:".date("Y-m-d H:i:s",filectime($filename));} 242 | function uCode($text){return mb_convert_encoding($text,'UTF-8','GBK');} 243 | function gCode($text){return mb_convert_encoding($text,'GBK','UTF-8');} 244 | 245 | function dirSize($directoty){ 246 | $dir_size=0; 247 | if($dir_handle=opendir($directoty)) 248 | { 249 | while($filename=readdir($dir_handle)){ 250 | $subFile=$directoty.DIRECTORY_SEPARATOR.$filename; 251 | if($filename=='.'||$filename=='..'){ 252 | continue; 253 | }elseif (is_dir($subFile)) 254 | { 255 | $dir_size+=dirSize($subFile); 256 | }elseif (is_file($subFile)){ 257 | $dir_size+=filesize($subFile); 258 | } 259 | } 260 | closedir($dir_handle); 261 | } 262 | return ($dir_size); 263 | } 264 | // 计算文件大小的函数 265 | function Size($size) { 266 | $sz = ' kMGTP'; 267 | $factor = floor((strlen($size) - 1) / 3); 268 | return ($size>=1024)?sprintf("%.2f", $size / pow(1024, $factor)) . @$sz[$factor]:$size; 269 | } 270 | 271 | function curl_get_contents($url) 272 | { 273 | $ch = curl_init(); 274 | curl_setopt($ch, CURLOPT_URL, $url); 275 | curl_setopt($ch, CURLOPT_TIMEOUT, 60); 276 | curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1); 277 | curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 278 | $r = curl_exec($ch); 279 | curl_close($ch); 280 | return $r; 281 | } 282 | 283 | /****************************************************************/ 284 | /* function up() */ 285 | /* */ 286 | /* First step to Upload. */ 287 | /* User enters a file and the submits it to upload() */ 288 | /****************************************************************/ 289 | 290 | function up() { 291 | global $meurl, $folder; 292 | maintop("上传"); 293 | 294 | echo "
    \n" 295 | ."
    本地上传 Max:".ini_get('upload_max_filesize').",".ini_get('max_file_uploads')."个
    \n" 296 | ."
    \n"; 297 | 298 | echo "




    \n" 301 | ."" 302 | ."
    \n"; 303 | echo "
    远程下载
    什么是远程下载?
    远程下载是从其他服务器获取文件并直接下载到当前服务器的一种功能。
    类似于SSH的Wget功能,免去我们下载再手动上传所浪费的时间。
    " 304 | ."
    " 305 | ."
    \n" 307 | ."" 308 | .""; 309 | 310 | mainbottom(); 311 | } 312 | 313 | 314 | /****************************************************************/ 315 | /* function yupload() */ 316 | /* */ 317 | /* Second step in wget file. */ 318 | /* Saves the file to the disk. */ 319 | /* Recieves $upfile from up() as the uploaded file. */ 320 | /****************************************************************/ 321 | 322 | function yupload($url, $folder, $unzip, $delzip) { 323 | global $meurl; 324 | if(empty($folder)){ 325 | $folder="./"; 326 | } 327 | $nfolder = $folder; 328 | $nurl = $url; 329 | $url = gCode($url); 330 | $folder = gCode($folder); 331 | if($url!==""){ 332 | ignore_user_abort(true); // 要求离线也可下载 333 | set_time_limit (24 * 60 * 60); // 设置超时时间 334 | if (!file_exists($folder)){ 335 | mkdir($folder, 0755); 336 | } 337 | $newfname = $folder . basename($url); // 取得文件的名称 338 | if(function_exists('curl_init')){ 339 | $file = curl_get_contents($url);file_put_contents($newfname,$file); 340 | }else{ 341 | $file=fopen($url,"rb"); 342 | if($file){$newf = fopen ($newfname, "wb"); 343 | if($newf)while (!feof($file)) {fwrite($newf, fread($file, 1024 * 8), 1024 * 8);}} 344 | if($file)fclose($file); 345 | if($newf)fclose($newf); 346 | } 347 | maintop("远程上传"); 348 | echo "
    文件 ".basename($url)." 上传成功
    \n"; 349 | $end = explode('.', basename($url)); 350 | if((end($end)=="zip") && isset($unzip) && $unzip == "checkbox"){ 351 | if(class_exists('ZipArchive')){ 352 | echo "您可以 访问文件夹 或者 返回目录 或者 继续上传\n"; 353 | echo "
    '; 376 | }else{ 377 | echo('此服务器上的PHP不支持ZipArchive,无法解压文件!
    '); 378 | } 379 | }else{ 380 | echo "您可以 访问文件夹 或者 编辑文件 或者 返回目录 或者 继续上传\n
    "; 381 | } 382 | mainbottom(); 383 | return true; 384 | }else{ 385 | printerror ('文件地址不能为空。'); 386 | } 387 | } 388 | 389 | 390 | /****************************************************************/ 391 | /* function upload() */ 392 | /* */ 393 | /* Second step in upload. */ 394 | /* 将文件保存到磁盘中 */ 395 | /* Recieves $upfile from up() as the uploaded file. */ 396 | /****************************************************************/ 397 | 398 | function upload($upfile,$ndir,$unzip,$delzip) { 399 | global $meurl, $folder; 400 | if(empty($ndir)){ 401 | $ndir="./"; 402 | } 403 | $nfolder = $folder; 404 | $nndir = $ndir; 405 | $ndir = gCode($ndir); 406 | if (!$upfile) { 407 | printerror("您没有选择文件!"); 408 | exit; 409 | }elseif($upfile) { 410 | maintop("上传"); 411 | if (!file_exists($ndir)){ 412 | mkdir($ndir, 0755); 413 | } 414 | $i = 1; 415 | echo "
    您可以 前往文件所上传到的目录 或者 返回目录 或者 继续上传
    \n"; 416 | echo ''; 453 | mainbottom(); 454 | }else{ 455 | printerror("您没有选择文件!"); 456 | } 457 | } 458 | 459 | /****************************************************************/ 460 | /* function unz() */ 461 | /* */ 462 | /* First step in unz. */ 463 | /* Prompts the user for confirmation. */ 464 | /* Recieves $dename and ask for deletion confirmation. */ 465 | /****************************************************************/ 466 | 467 | function unz($dename) { 468 | global $meurl, $folder, $content; 469 | if (!$dename == "") { 470 | if(class_exists('ZipArchive')){ 471 | maintop("解压"); 472 | echo "\n" 473 | ."
    解压 ".$folder.$dename."
    \n" 474 | ."" 475 | ."" 476 | .""; 495 | echo "\n" 496 | ."\n" 497 | ."\n" 498 | ."
    \n" 499 | ."
    \n"; 500 | mainbottom(); 501 | }else{ 502 | printerror("此服务器上的PHP不支持ZipArchive,无法解压文件!\n"); 503 | } 504 | }else{ 505 | home(); 506 | } 507 | } 508 | 509 | 510 | /****************************************************************/ 511 | /* function unzip() */ 512 | /* */ 513 | /* Second step in unzip. */ 514 | /****************************************************************/ 515 | function unzip($dename,$ndir,$del) { 516 | global $meurl, $folder; 517 | $nndir = $ndir; 518 | $nfolder = $folder; 519 | $ndename = $dename; 520 | $dename = gCode($dename); 521 | $folder = gCode($folder); 522 | $ndir = gCode($ndir); 523 | if (!$dename == "") { 524 | if (!file_exists($ndir)){ 525 | mkdir($ndir, 0755); 526 | } 527 | if(class_exists('ZipArchive')){ 528 | $zip = new ZipArchive(); 529 | if ($zip->open($folder.$dename) === TRUE) { 530 | maintop("解压"); 531 | if($zip->extractTo($ndir)){ 532 | echo '
    现在您可以 返回目录
    '; 533 | echo '\n"; 550 | mainbottom(); 551 | }else{ 552 | printerror('无法解压文件:'.$nfolder.$ndename); 553 | } 554 | }else{ 555 | printerror('此服务器上的PHP不支持ZipArchive,无法解压文件!'); 556 | } 557 | }else{ 558 | home(); 559 | } 560 | } 561 | 562 | 563 | /****************************************************************/ 564 | /* function delete() */ 565 | /* */ 566 | /* Second step in delete. */ 567 | /* Deletes the actual file from disk. */ 568 | /* Recieves $upfile from up() as the uploaded file. */ 569 | /****************************************************************/ 570 | 571 | function deltree($pathdir) 572 | { 573 | if(is_empty_dir($pathdir))//如果是空的 574 | { 575 | rmdir($pathdir);//直接删除 576 | } 577 | else 578 | {//否则读这个目录,除了.和..外 579 | $d=dir($pathdir); 580 | while($a=$d->read()) 581 | { 582 | if(is_file($pathdir.'/'.$a) && ($a!='.') && ($a!='..')){unlink($pathdir.'/'.$a);} 583 | //如果是文件就直接删除 584 | if(is_dir($pathdir.'/'.$a) && ($a!='.') && ($a!='..')) 585 | {//如果是目录 586 | if(!is_empty_dir($pathdir.'/'.$a))//是否为空 587 | {//如果不是,调用自身,不过是原来的路径+他下级的目录名 588 | deltree($pathdir.'/'.$a); 589 | } 590 | if(is_empty_dir($pathdir.'/'.$a)) 591 | {//如果是空就直接删除 592 | rmdir($pathdir.'/'.$a); 593 | } 594 | } 595 | } 596 | $d->close(); 597 | } 598 | } 599 | 600 | function is_empty_dir($pathdir){ 601 | $d=opendir($pathdir); 602 | $i=0; 603 | while($a=readdir($d)){ 604 | $i++; 605 | } 606 | closedir($d); 607 | if($i>2){return false;} 608 | else return true; 609 | } 610 | 611 | 612 | /****************************************************************/ 613 | /* function edit() */ 614 | /* */ 615 | /* First step in edit. */ 616 | /* Reads the file from disk and displays it to be edited. */ 617 | /* Recieves $upfile from up() as the uploaded file. */ 618 | /****************************************************************/ 619 | 620 | function edit($fename) { 621 | global $meurl,$folder; 622 | $file = gCode($folder.$fename); 623 | if (file_exists($file)) { 624 | maintop("编辑"); 625 | $contents = file_get_contents($file); 626 | if(function_exists('mb_detect_encoding'))$encode = mb_detect_encoding($contents,array('ASCII','UTF-8','GBK','GB2312'));else $encode = 'UTF-8'; 627 | if(htmlspecialchars($_REQUEST['encode'])){$encode = htmlspecialchars($_REQUEST['encode']);} 628 | if($encode!="UTF-8" && !empty($encode))$contents = mb_convert_encoding($contents,"UTF-8",$encode); 629 | foreach(mb_list_encodings() as $key => $value){ 630 | if($key >= 19): 631 | $arr=array('EUC-CN' => 'GB2312','CP936' => 'GBK','SJIS-mac'=>'MacJapanese','SJIS-Mobile#DOCOMO'=>'SJIS-DOCOMO','SJIS-Mobile#KDDI'=>'SJIS-KDDI','SJIS-Mobile#SOFTBANK'=>'SJIS-SOFTBANK','UTF-8-Mobile#DOCOMO'=>'UTF-8-DOCOMO','UTF-8-Mobile#KDDI-B'=>'UTF-8-KDDI','UTF-8-Mobile#SOFTBANK'=>'UTF-8-SOFTBANK','ISO-2022-JP-MOBILE#KDDI'=>'ISO-2022-JP-KDDI'); 632 | if(array_key_exists($value, $arr)) $value_text = $arr[$value]; else $value_text = $value; 633 | if($encode == $value) $list.="'; else $list.="'; 634 | endif; 635 | } 636 | echo "
    编辑文件 {$folder}{$fename}\n" 637 | ." » ' 640 | ."
    ' 643 | ."" 646 | ."
    \n" 647 | ."\n" 648 | ."\n" 649 | ."\n" 650 | ."\n"; 651 | mainbottom(); 652 | }else{ 653 | printerror("文件不存在!"); 654 | } 655 | } 656 | 657 | 658 | /****************************************************************/ 659 | /* function save() */ 660 | /* */ 661 | /* Second step in edit. */ 662 | /* Recieves $ncontent from edit() as the file content. */ 663 | /* Recieves $fename from edit() as the file name to modify. */ 664 | /****************************************************************/ 665 | 666 | function save($ncontent, $fename, $encode) { 667 | global $meurl,$folder; 668 | if (!$fename == "") { 669 | $file = gCode($folder.$fename); 670 | $ydata = $ncontent; 671 | if($encode!=="UTF-8" && $encode!=="ASCII")$ydata = mb_convert_encoding($ydata,$encode,"UTF-8"); 672 | if(file_put_contents($file, $ydata) or $ncontent=="") { 673 | maintop("编辑"); 674 | echo "
    文件 {$folder}{$fename} 保存成功!$encode
    \n"; 675 | echo "
    请选择 返回目录 或者 继续编辑
    \n"; 676 | $fp = null; 677 | mainbottom(); 678 | }else{ 679 | printerror("文件保存出错!"); 680 | } 681 | }else{ 682 | home(); 683 | } 684 | } 685 | 686 | /****************************************************************/ 687 | /* function cr() */ 688 | /* */ 689 | /* First step in create. */ 690 | /* Promts the user to a filename and file/directory switch. */ 691 | /****************************************************************/ 692 | 693 | function cr() { 694 | global $meurl, $folder; 695 | maintop("创建"); 696 | echo "
    \n" 697 | ."
    创建文件 或 目录
    \n" 699 | ."
    "; 700 | 701 | echo "\n" 702 | ."\n" 703 | ."
    \n"; 704 | mainbottom(); 705 | } 706 | 707 | 708 | /****************************************************************/ 709 | /* function create() */ 710 | /* */ 711 | /* Second step in create. */ 712 | /* Creates the file/directoy on disk. */ 713 | /* Recieves $nfname from cr() as the filename. */ 714 | /* Recieves $infolder from cr() to determine file trpe. */ 715 | /****************************************************************/ 716 | 717 | function create($nfname, $isfolder, $ndir) { 718 | global $meurl, $folder; 719 | if (!$nfname == "") { 720 | $ndir = gCode($ndir); 721 | $nfname = gCode($nfname); 722 | if ($isfolder == 1) { 723 | if(mkdir($ndir."/".$nfname, 0755)) { 724 | $ndir = uCode($ndir); 725 | $nfname = uCode($nfname); 726 | maintop("创建"); 727 | echo "
    您的目录".$ndir.$nfname."/ 已经成功被创建。
    \n" 728 | ."请选择 打开文件夹 或者 返回目录\n"; 729 | echo "
    "; 730 | mainbottom(); 731 | }else{ 732 | $ndir = uCode($ndir); 733 | $nfname = uCode($nfname); 734 | printerror("您的目录 ".$ndir.$nfname." 不能被创建。请检查您的目录权限是否已经被设置为可写 或者 目录是否已经存在\n"); 735 | } 736 | }else{ 737 | if(fopen($ndir."/".$nfname, "w")) { 738 | $ndir = uCode($ndir); 739 | $nfname = uCode($nfname); 740 | maintop("创建"); 741 | echo "
    您的文件, ".$ndir.$nfname." 已经成功被创建
    \n" 742 | ."编辑文件 或者是 返回目录\n"; 743 | echo "
    "; 744 | mainbottom(); 745 | }else{ 746 | $ndir = uCode($ndir); 747 | $nfname = uCode($nfname); 748 | printerror("您的文件 ".$ndir.$nfname." 不能被创建。请检查您的目录权限是否已经被设置为可写 或者 文件是否已经存在\n"); 749 | } 750 | } 751 | }else{ 752 | cr(); 753 | } 754 | } 755 | 756 | 757 | /****************************************************************/ 758 | /* function ren() */ 759 | /* */ 760 | /* First step in rename. */ 761 | /* Promts the user for new filename. */ 762 | /* Globals $file and $folder for filename. */ 763 | /****************************************************************/ 764 | 765 | function ren($file) { 766 | global $meurl,$folder,$ufolder; 767 | $ufile = $file; 768 | if (!$file == "") { 769 | maintop("重命名"); 770 | echo "
    \n" 771 | ."
    重命名 ".$ufolder.$ufile.'
    '; 772 | echo "\n" 773 | ."\n" 774 | ."\n" 775 | ."
    \n"; 776 | mainbottom(); 777 | }else{ 778 | home(); 779 | } 780 | } 781 | 782 | 783 | /****************************************************************/ 784 | /* function renam() */ 785 | /* */ 786 | /* Second step in rename. */ 787 | /* Rename the specified file. */ 788 | /* Recieves $rename from ren() as the old filename. */ 789 | /* Recieves $nrename from ren() as the new filename. */ 790 | /****************************************************************/ 791 | 792 | function renam($rename, $nrename, $folder) { 793 | global $meurl,$folder; 794 | if (!$rename == "") { 795 | $loc1 = gCode("$folder".$rename); 796 | $loc2 = gCode("$folder".$nrename); 797 | if(rename($loc1,$loc2)) { 798 | maintop("重命名"); 799 | echo "
    文件 ".$folder.$rename." 已被重命名成 ".$folder.$nrename."
    \n" 800 | ."
    请选择 返回目录 或者 编辑新文件
    \n"; 801 | mainbottom(); 802 | }else{ 803 | printerror("重命名出错!"); 804 | } 805 | }else{ 806 | home(); 807 | } 808 | } 809 | 810 | /****************************************************************/ 811 | /* function movall */ 812 | /* */ 813 | /* 批量移动 2014-4-12 by jooies */ 814 | /****************************************************************/ 815 | 816 | function movall($file, $ndir, $folder) { 817 | global $meurl,$folder; 818 | if (!$file == "") { 819 | maintop("批量移动"); 820 | $arr = str_split($ndir); 821 | if($arr[count($arr)-1]!=='/'){ 822 | $ndir .= '/'; 823 | } 824 | $nndir = $ndir; 825 | $nfolder = $folder; 826 | $file = gCode($file); 827 | $ndir = gCode($ndir); 828 | $folder = gCode($folder); 829 | if (!file_exists($ndir)){ 830 | mkdir($ndir, 0755); 831 | } 832 | $file = explode(',',$file); 833 | echo "
    您可以 前往文件夹查看文件 或者 返回目录
    "; 852 | mainbottom(); 853 | }else{ 854 | home(); 855 | } 856 | } 857 | 858 | /****************************************************************/ 859 | /* function tocopy */ 860 | /* */ 861 | /* 批量复制 2014-4-19 by jooies */ 862 | /****************************************************************/ 863 | 864 | function tocopy($file, $ndir, $folder) { 865 | global $meurl,$folder; 866 | if (!$file == "") { 867 | maintop("复制"); 868 | $nndir = $ndir; 869 | $nfolder = $folder; 870 | $file = gCode($file); 871 | $ndir = gCode($ndir); 872 | $folder = gCode($folder); 873 | if (!file_exists($ndir)){ 874 | mkdir($ndir, 0755); 875 | } 876 | $file = explode(',',$file); 877 | echo "
    您可以 前往文件夹查看文件 或者 返回目录
    "; 896 | mainbottom(); 897 | }else{ 898 | home(); 899 | } 900 | } 901 | 902 | 903 | /****************************************************************/ 904 | /* function logout() */ 905 | /* */ 906 | /* Logs the user out and kills cookies */ 907 | /****************************************************************/ 908 | 909 | function logout() { 910 | global $meurl; 911 | setcookie("user","",time()-60*60*24*1); 912 | setcookie("pass","",time()-60*60*24*1); 913 | 914 | maintop("注销",false); 915 | echo "
    注销成功!
    " 916 | ."点击这里重新登录"; 917 | mainbottom(); 918 | } 919 | 920 | 921 | /****************************************************************/ 922 | /* function mainbottom() */ 923 | /* */ 924 | /* 页面底部的版权声明 */ 925 | /****************************************************************/ 926 | 927 | function mainbottom() { 928 | echo "
    " 929 | ."FileBox Version 1.10.0.2
    \n" 930 | ."\n"; 931 | exit; 932 | } 933 | 934 | 935 | /****************************************************************/ 936 | /* function sqlb() */ 937 | /* */ 938 | /* First step to backup sql. */ 939 | /****************************************************************/ 940 | 941 | function sqlb() { 942 | global $meurl; 943 | maintop("数据库备份"); 944 | echo "
    这将进行数据库导出并压缩成mysql.zip的动作! 如存在该文件,该文件将被覆盖!
    \n



    \n"; 945 | mainbottom(); 946 | } 947 | 948 | 949 | /****************************************************************/ 950 | /* function sqlbackup() */ 951 | /* */ 952 | /* Second step in backup sql. */ 953 | /****************************************************************/ 954 | 955 | function sqlbackup($ip="localhost",$sql,$username="root",$password) { 956 | global $meurl; 957 | if(class_exists('ZipArchive')){ 958 | $database=$sql;//数据库名 959 | $options=array( 960 | 'hostname' => $ip,//ip地址 961 | 'charset' => 'utf8',//编码 962 | 'filename' => $database.'.sql',//文件名 963 | 'username' => $username, 964 | 'password' => $password 965 | ); 966 | $mysql = mysqli_connect($options['hostname'],$options['username'],$options['password'],$database)or die(printerror("不能连接数据库:".mysqli_connect_error())); 967 | maintop("MySQL备份"); 968 | mysqli_query($mysql,"SET NAMES '{$options['charset']}'"); 969 | $tables = list_tables($database,$mysql); 970 | $filename = sprintf($options['filename'],$database); 971 | $fp = fopen($filename, 'w'); 972 | foreach ($tables as $table) { 973 | dump_table($table, $fp,$mysql); 974 | } 975 | fclose($fp); 976 | mysqli_close($mysql); 977 | //压缩sql文件 978 | if (file_exists('mysql.zip')) { 979 | unlink('mysql.zip'); 980 | } 981 | $file_name=$options['filename']; 982 | $zip = new ZipArchive; 983 | $res = $zip->open('mysql.zip', ZipArchive::CREATE); 984 | if ($res === TRUE) { 985 | $zip->addfile($file_name); 986 | $zip->close(); 987 | //删除服务器上的sql文件 988 | unlink($file_name); 989 | echo '
    数据库导出并压缩完成!' 990 | ." 返回目录
    \n"; 991 | }else{ 992 | printerror('无法压缩文件!'); 993 | } 994 | exit; 995 | mainbottom(); 996 | }else{ 997 | printerror('此服务器上的PHP不支持ZipArchive,无法压缩文件!'); 998 | } 999 | } 1000 | 1001 | function list_tables($database,$mysql) 1002 | { 1003 | $rs = mysqli_query($mysql,"SHOW TABLES FROM $database"); 1004 | $tables = array(); 1005 | while ($row = mysqli_fetch_row($rs)) { 1006 | $tables[] = $row[0]; 1007 | } 1008 | mysqli_free_result($rs); 1009 | return $tables; 1010 | } 1011 | 1012 | //导出数据库 1013 | function dump_table($table, $fp = null,$mysql) 1014 | { 1015 | $need_close = false; 1016 | if (is_null($fp)) { 1017 | $fp = fopen($table . '.sql', 'w'); 1018 | $need_close = true; 1019 | } 1020 | $a=mysqli_query($mysql,"show create table `{$table}`"); 1021 | $row=mysqli_fetch_assoc($a);fwrite($fp,$row['Create Table'].';');//导出表结构 1022 | $rs = mysqli_query($mysql,"SELECT * FROM `{$table}`"); 1023 | while ($row = mysqli_fetch_row($rs)) { 1024 | fwrite($fp, get_insert_sql($table, $row)); 1025 | } 1026 | mysqli_free_result($rs); 1027 | if ($need_close) { 1028 | fclose($fp); 1029 | } 1030 | } 1031 | 1032 | //导出表数据 1033 | function get_insert_sql($table, $row) 1034 | { 1035 | $sql = "INSERT INTO `{$table}` VALUES ("; 1036 | $values = array(); 1037 | foreach ($row as $value) { 1038 | $values[] = "'" . mysql_real_escape_string($value) . "'"; 1039 | } 1040 | $sql .= implode(', ', $values) . ");"; 1041 | return $sql; 1042 | } 1043 | 1044 | /****************************************************************/ 1045 | /* function ftpa() */ 1046 | /* */ 1047 | /* First step to backup sql. */ 1048 | /****************************************************************/ 1049 | 1050 | function ftpa() { 1051 | global $meurl; 1052 | maintop("FTP备份"); 1053 | echo "
    这将把文件远程上传到其他ftp!如目录存在该文件,文件将被覆盖!
    \n




    \n"; 1054 | mainbottom(); 1055 | } 1056 | 1057 | /****************************************************************/ 1058 | /* function ftpall() */ 1059 | /* */ 1060 | /* Second step in backup sql. */ 1061 | /****************************************************************/ 1062 | 1063 | function ftpall($ftpip,$ftpuser,$ftppass,$ftpdir,$ftpfile,$del) { 1064 | global $meurl; 1065 | $ftpfile = gCode($ftpfile); 1066 | $ftpip=explode(':', $ftpip); 1067 | $ftp_server=$ftpip['0'];//服务器 1068 | $ftp_user_name=$ftpuser;//用户名 1069 | $ftp_user_pass=$ftppass;//密码 1070 | if(empty($ftpip['1'])){ 1071 | $ftp_port='21'; 1072 | }else{ 1073 | $ftp_port=$ftpip['1'];//端口 1074 | } 1075 | $ftp_put_dir=$ftpdir;//上传目录 1076 | $ffile=$ftpfile;//上传文件 1077 | 1078 | $ftp_conn_id = ftp_connect($ftp_server,$ftp_port); 1079 | $ftp_login_result = ftp_login($ftp_conn_id, $ftp_user_name, $ftp_user_pass); 1080 | 1081 | if((!$ftp_conn_id) || (!$ftp_login_result)) { 1082 | printerror('连接到ftp服务器失败'); 1083 | exit; 1084 | }else{ 1085 | ftp_pasv ($ftp_conn_id,true); //返回一下模式,这句很奇怪,有些ftp服务器一定需要执行这句 1086 | ftp_chdir($ftp_conn_id, $ftp_put_dir); 1087 | $ffile=explode(',', $ffile); 1088 | foreach ($ffile as $v) { 1089 | $ftp_upload = ftp_put($ftp_conn_id,$v,$v, FTP_BINARY); 1090 | if ($del == 'del') { 1091 | unlink('./'.$v); 1092 | } 1093 | } 1094 | ftp_close($ftp_conn_id); //断开 1095 | } 1096 | maintop("FTP上传"); 1097 | echo "
    "; 1098 | $ftpfile = uCode($ftpfile); 1099 | echo "文件 ".$ftpfile." 上传成功
    \n" 1100 | ." 返回目录\n"; 1101 | echo "
    "; 1102 | mainbottom(); 1103 | } 1104 | 1105 | 1106 | /****************************************************************/ 1107 | /* function printerror() */ 1108 | /* */ 1109 | /* 用于显示错误信息的函数 */ 1110 | /* $error为显示的提示 */ 1111 | /****************************************************************/ 1112 | 1113 | function printerror($error) { 1114 | maintop("错误"); 1115 | echo "
    错误信息如下:
    \n".$error."\n 返回上一步
    "; 1116 | mainbottom(); 1117 | } 1118 | 1119 | /****************************************************************/ 1120 | /* function deleteall() */ 1121 | /* */ 1122 | /* 2014-3-9 Add by Jooies */ 1123 | /* 实现文件的批量删除功能 */ 1124 | /****************************************************************/ 1125 | 1126 | function deleteall($dename) { 1127 | if (!$dename == "") { 1128 | $udename = $dename; 1129 | $dename = gCode($dename); 1130 | if (is_dir($dename)) { 1131 | if(is_empty_dir($dename)){ 1132 | rmdir($dename); 1133 | echo $udename." 已经被删除\n"; 1134 | }else{ 1135 | deltree($dename); 1136 | rmdir($dename); 1137 | echo $udename." 已经被删除\n"; 1138 | } 1139 | }else{ 1140 | if(unlink($dename)) { 1141 | echo $udename." 已经被删除\n"; 1142 | }else{ 1143 | echo("无法删除文件:$udename 。\n参考信息\n1.文件不存在\n2.文件正在执行\n"); 1144 | } 1145 | } 1146 | } 1147 | } 1148 | 1149 | switch($action) {//$action 为批量操作 1150 | case "删除": 1151 | if(isset($_POST['select_item'])){ 1152 | maintop("删除"); 1153 | echo "
    您可以 返回目录
    \n"; 1154 | echo ''; 1166 | mainbottom(); 1167 | }else{ 1168 | printerror("您没有选择文件"); 1169 | } 1170 | break; 1171 | 1172 | case "移动": 1173 | if(isset($_POST['select_item'])){ 1174 | maintop("批量移动"); 1175 | $file = ''; 1176 | if($_POST['select_item']['d']){ 1177 | foreach($_POST['select_item']['d'] as $key => $val){ 1178 | $file = $file.$key.','; 1179 | } 1180 | } 1181 | if($_POST['select_item']['f']){ 1182 | foreach($_POST['select_item']['f'] as $key => $val){ 1183 | $file = $file.$key.','; 1184 | } 1185 | } 1186 | $file = substr($file,0,-1); 1187 | echo "
    "; 1188 | echo '
    移动文件
    您将把下列文件移动到:' 1189 | ."\n" 1190 | ."
    "; 1191 | echo "\n"; 1192 | mainbottom(); 1193 | }else{ 1194 | printerror("您没有选择文件"); 1195 | } 1196 | break; 1197 | 1198 | case "复制": 1199 | if(isset($_POST['select_item'])){ 1200 | maintop("复制"); 1201 | $file = ''; 1202 | if($_POST['select_item']['d']){ 1203 | foreach($_POST['select_item']['d'] as $key => $val){ 1204 | $file = $file.$key.','; 1205 | } 1206 | } 1207 | if($_POST['select_item']['f']){ 1208 | foreach($_POST['select_item']['f'] as $key => $val){ 1209 | $file = $file.$key.','; 1210 | } 1211 | } 1212 | $file = substr($file,0,-1); 1213 | echo ""; 1214 | echo '
    复制文件
    您将把下列文件复制到:' 1215 | ."\n" 1216 | ."
    "; 1217 | echo "\n"; 1218 | mainbottom(); 1219 | }else{ 1220 | printerror("您没有选择文件"); 1221 | } 1222 | break; 1223 | 1224 | case "压缩": 1225 | if(isset($_POST['select_item'])){ 1226 | if(class_exists('ZipArchive')){ 1227 | maintop("目录压缩"); 1228 | $time = $_SERVER['REQUEST_TIME']; 1229 | echo "
    您可以 查看文件夹 或者 下载文件 或者 返回目录
    "; 1230 | echo '\n"; 1281 | }else{ 1282 | echo '压缩失败!' 1283 | ."\n"; 1284 | } 1285 | mainbottom(); 1286 | }else{ 1287 | printerror('此服务器上的PHP不支持ZipArchive,无法压缩文件!'); 1288 | } 1289 | }else{ 1290 | printerror("您没有选择文件"); 1291 | } 1292 | break; 1293 | 1294 | case "权限": 1295 | if($os != 'windows'){ 1296 | if(isset($_POST['select_item'])){ 1297 | maintop("修改权限"); 1298 | echo "
    返回目录
    \n"; 1299 | echo '"; 1338 | mainbottom(); 1339 | }else{ 1340 | printerror("您没有选择文件"); 1341 | } 1342 | }else{printerror("Windows系统无法修改权限。");} 1343 | break; 1344 | 1345 | } 1346 | 1347 | /****************************************************************/ 1348 | /* function switch() */ 1349 | /* */ 1350 | /* Switches functions. */ 1351 | /* Recieves $op() and switches to it *. 1352 | /****************************************************************/ 1353 | 1354 | switch($op) { 1355 | case "home": 1356 | home(); 1357 | break; 1358 | 1359 | case "up": 1360 | up(); 1361 | break; 1362 | 1363 | case "yupload": 1364 | if(!isset($_REQUEST['url'])){ 1365 | printerror('您没有输入文件地址!'); 1366 | }elseif(isset($_REQUEST['ndir'])){ 1367 | yupload($_REQUEST['url'], $_REQUEST['ndir'], $_REQUEST['unzip'],$_REQUEST['delzip']); 1368 | }else{ 1369 | yupload($_REQUEST['url'], './',$_REQUEST['unzip'],$_REQUEST['delzip']); 1370 | } 1371 | break; 1372 | 1373 | case "upload": 1374 | if(!isset($_FILES['upfile'])){ 1375 | printerror('您没有选择文件!'); 1376 | }elseif(isset($_REQUEST['ndir'])){ 1377 | upload($_FILES['upfile'], $_REQUEST['ndir'], $_REQUEST['unzip'] ,$_REQUEST['delzip']); 1378 | }else{ 1379 | upload($_FILES['upfile'], './', $_REQUEST['unzip'] ,$_REQUEST['delzip']); 1380 | } 1381 | break; 1382 | 1383 | case "unz": 1384 | unz($_REQUEST['dename']); 1385 | break; 1386 | 1387 | case "unzip": 1388 | unzip($_REQUEST['dename'],$_REQUEST['ndir'],$_REQUEST['del']); 1389 | break; 1390 | 1391 | case "sqlb": 1392 | sqlb(); 1393 | break; 1394 | 1395 | case "sqlbackup": 1396 | sqlbackup($_POST['ip'], $_POST['sql'], $_POST['username'], $_POST['password']); 1397 | break; 1398 | 1399 | case "ftpa": 1400 | ftpa(); 1401 | break; 1402 | 1403 | case "ftpall": 1404 | ftpall($_POST['ftpip'], $_POST['ftpuser'], $_POST['ftppass'], $_POST['goto'], $_POST['ftpfile'], $_POST['del']); 1405 | break; 1406 | 1407 | case "edit": 1408 | edit($_REQUEST['fename']); 1409 | break; 1410 | 1411 | case "save": 1412 | save($_REQUEST['ncontent'], $_REQUEST['fename'], $_REQUEST['encode']); 1413 | break; 1414 | 1415 | case "cr": 1416 | cr(); 1417 | break; 1418 | 1419 | case "create": 1420 | create($_REQUEST['nfname'], $_REQUEST['isfolder'], $_REQUEST['ndir']); 1421 | break; 1422 | 1423 | case "ren": 1424 | ren($_REQUEST['file']); 1425 | break; 1426 | 1427 | case "rename": 1428 | renam($_REQUEST['rename'], $_REQUEST['nrename'], $folder); 1429 | break; 1430 | 1431 | case "movall": 1432 | movall($_REQUEST['file'], $_REQUEST['ndir'], $folder); 1433 | break; 1434 | 1435 | case "copy": 1436 | tocopy($_REQUEST['file'], $_REQUEST['ndir'], $folder); 1437 | break; 1438 | 1439 | case "printerror": 1440 | printerror($error); 1441 | break; 1442 | 1443 | case "logout": 1444 | logout(); 1445 | break; 1446 | 1447 | case "z": 1448 | z($_REQUEST['dename'],$_REQUEST['folder']); 1449 | break; 1450 | 1451 | case "zip": 1452 | zip($_REQUEST['dename'],$_REQUEST['folder']); 1453 | break; 1454 | 1455 | default: 1456 | home(); 1457 | break; 1458 | } 1459 | 1460 | ?> 1461 | -------------------------------------------------------------------------------- /info.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tz.php: -------------------------------------------------------------------------------- 1 | =0; $l--) 75 | { 76 | $allsize1[$l]=floor($size/pow(1024,$l)); 77 | $allsize[$l]=$allsize1[$l]-$allsize1[$l+1]*1024; 78 | } 79 | 80 | $len=count($allsize); 81 | 82 | for($j = $len-1; $j >=0; $j--) 83 | { 84 | $fsize=$fsize.$allsize[$j].$danwei[$j]; 85 | } 86 | return $fsize; 87 | } 88 | 89 | 90 | function valid_email($str) 91 | { 92 | 93 | return ( ! preg_match("/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix", $str)) ? FALSE : TRUE; 94 | 95 | } 96 | 97 | 98 | //检测PHP设置参数 99 | 100 | function show($varName) 101 | { 102 | 103 | switch($result = get_cfg_var($varName)) 104 | { 105 | 106 | case 0: 107 | 108 | return '×'; 109 | 110 | break; 111 | 112 | 113 | case 1: 114 | 115 | return ''; 116 | 117 | break; 118 | 119 | 120 | default: 121 | 122 | return $result; 123 | 124 | break; 125 | 126 | } 127 | 128 | } 129 | 130 | 131 | 132 | //保留服务器性能测试结果 133 | 134 | $valInt = isset($_POST['pInt']) ? $_POST['pInt'] : "未测试"; 135 | 136 | $valFloat = isset($_POST['pFloat']) ? $_POST['pFloat'] : "未测试"; 137 | 138 | $valIo = isset($_POST['pIo']) ? $_POST['pIo'] : "未测试"; 139 | 140 | 141 | 142 | if ($_GET['act'] == "phpinfo") 143 | { 144 | 145 | phpinfo(); 146 | 147 | exit(); 148 | 149 | } 150 | elseif($_POST['act'] == "整型测试") 151 | { 152 | 153 | $valInt = test_int(); 154 | 155 | } 156 | elseif($_POST['act'] == "浮点测试") 157 | { 158 | 159 | $valFloat = test_float(); 160 | 161 | } 162 | elseif($_POST['act'] == "IO测试") 163 | { 164 | 165 | $valIo = test_io(); 166 | 167 | } 168 | //网速测试-开始 169 | elseif($_POST['act']=="开始测试") 170 | { 171 | ?> 172 | 177 | "; 181 | } 182 | ?> 183 | 189 | "; 199 | Echo "这里显示系统所支持的所有函数,和自定义函数\n"; 200 | print_r($arr); 201 | echo ""; 202 | exit(); 203 | }elseif($_GET['act'] == "disable_functions") 204 | { 205 | $disFuns=get_cfg_var("disable_functions"); 206 | if(empty($disFuns)) 207 | { 208 | $arr = '×'; 209 | } 210 | else 211 | { 212 | $arr = $disFuns; 213 | } 214 | Function php() 215 | { 216 | } 217 | echo "
    ";
     218 | 	Echo "这里显示系统被禁用的函数\n";
     219 | 	print_r($arr);
     220 | 	echo "
    "; 221 | exit(); 222 | } 223 | 224 | 225 | 226 | //MySQL检测 227 | 228 | if ($_POST['act'] == 'MySQL检测') 229 | { 230 | 231 | $host = isset($_POST['host']) ? trim($_POST['host']) : ''; 232 | 233 | $port = isset($_POST['port']) ? (int) $_POST['port'] : ''; 234 | 235 | $login = isset($_POST['login']) ? trim($_POST['login']) : ''; 236 | 237 | $password = isset($_POST['password']) ? trim($_POST['password']) : ''; 238 | 239 | $host = preg_match('~[^a-z0-9\-\.]+~i', $host) ? '' : $host; 240 | 241 | $port = intval($port) ? intval($port) : ''; 242 | 243 | $login = preg_match('~[^a-z0-9\_\-]+~i', $login) ? '' : htmlspecialchars($login); 244 | 245 | $password = is_string($password) ? htmlspecialchars($password) : ''; 246 | 247 | } 248 | elseif ($_POST['act'] == '函数检测') 249 | { 250 | 251 | $funRe = "函数".$_POST['funName']."支持状况检测结果:".isfun1($_POST['funName']); 252 | 253 | } 254 | elseif ($_POST['act'] == '邮件检测') 255 | { 256 | 257 | $mailRe = "邮件发送检测结果:发送"; 258 | if($_SERVER['SERVER_PORT']==80){$mailContent = "http://".$_SERVER['SERVER_NAME'].($_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME']);} 259 | else{$mailContent = "http://".$_SERVER['SERVER_NAME'].":".$_SERVER['SERVER_PORT'].($_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME']);} 260 | $mailRe .= (false !== @mail($_POST["mailAdd"], $mailContent, "This is a test mail!")) ? "完成":"失败"; 261 | 262 | } 263 | 264 | 265 | //网络速度测试 266 | if(isset($_POST['speed'])) 267 | { 268 | $speed=round(100/($_POST['speed']/1000),2); 269 | } 270 | elseif($_GET['speed']=="0") 271 | { 272 | $speed=6666.67; 273 | } 274 | elseif(isset($_GET['speed']) and $_GET['speed']>0) 275 | { 276 | $speed=round(100/($_GET['speed']/1000),2); //下载速度:$speed kb/s 277 | } 278 | else 279 | { 280 | $speed=" 未探测 "; 281 | } 282 | 283 | 284 | 285 | // 检测函数支持 286 | 287 | function isfun($funName = '') 288 | { 289 | 290 | if (!$funName || trim($funName) == '' || preg_match('~[^a-z0-9\_]+~i', $funName, $tmp)) return '错误'; 291 | 292 | return (false !== function_exists($funName)) ? '' : '×'; 293 | } 294 | function isfun1($funName = '') 295 | { 296 | if (!$funName || trim($funName) == '' || preg_match('~[^a-z0-9\_]+~i', $funName, $tmp)) return '错误'; 297 | return (false !== function_exists($funName)) ? '√' : '×'; 298 | } 299 | 300 | 301 | 302 | //整数运算能力测试 303 | 304 | function test_int() 305 | { 306 | 307 | $timeStart = gettimeofday(); 308 | 309 | for($i = 0; $i < 3000000; $i++) 310 | { 311 | 312 | $t = 1+1; 313 | 314 | } 315 | 316 | $timeEnd = gettimeofday(); 317 | 318 | $time = ($timeEnd["usec"]-$timeStart["usec"])/1000000+$timeEnd["sec"]-$timeStart["sec"]; 319 | 320 | $time = round($time, 3)."秒"; 321 | 322 | return $time; 323 | 324 | } 325 | 326 | 327 | 328 | //浮点运算能力测试 329 | 330 | function test_float() 331 | { 332 | 333 | //得到圆周率值 334 | 335 | $t = pi(); 336 | 337 | $timeStart = gettimeofday(); 338 | 339 | 340 | 341 | for($i = 0; $i < 3000000; $i++) 342 | { 343 | 344 | //开平方 345 | 346 | sqrt($t); 347 | 348 | } 349 | 350 | 351 | 352 | $timeEnd = gettimeofday(); 353 | 354 | $time = ($timeEnd["usec"]-$timeStart["usec"])/1000000+$timeEnd["sec"]-$timeStart["sec"]; 355 | 356 | $time = round($time, 3)."秒"; 357 | 358 | return $time; 359 | 360 | } 361 | 362 | 363 | 364 | //IO能力测试 365 | 366 | function test_io() 367 | { 368 | 369 | $fp = @fopen(PHPSELF, "r"); 370 | 371 | $timeStart = gettimeofday(); 372 | 373 | for($i = 0; $i < 10000; $i++) 374 | { 375 | 376 | @fread($fp, 10240); 377 | 378 | @rewind($fp); 379 | 380 | } 381 | 382 | $timeEnd = gettimeofday(); 383 | 384 | @fclose($fp); 385 | 386 | $time = ($timeEnd["usec"]-$timeStart["usec"])/1000000+$timeEnd["sec"]-$timeStart["sec"]; 387 | 388 | $time = round($time, 3)."秒"; 389 | 390 | return($time); 391 | 392 | } 393 | 394 | function GetCoreInformation() {$data = file('/proc/stat');$cores = array();foreach( $data as $line ) {if( preg_match('/^cpu[0-9]/', $line) ){$info = explode(' ', $line);$cores[]=array('user'=>$info[1],'nice'=>$info[2],'sys' => $info[3],'idle'=>$info[4],'iowait'=>$info[5],'irq' => $info[6],'softirq' => $info[7]);}}return $cores;} 395 | function GetCpuPercentages($stat1, $stat2) {if(count($stat1)!==count($stat2)){return;}$cpus=array();for( $i = 0, $l = count($stat1); $i < $l; $i++) { $dif = array(); $dif['user'] = $stat2[$i]['user'] - $stat1[$i]['user'];$dif['nice'] = $stat2[$i]['nice'] - $stat1[$i]['nice']; $dif['sys'] = $stat2[$i]['sys'] - $stat1[$i]['sys'];$dif['idle'] = $stat2[$i]['idle'] - $stat1[$i]['idle'];$dif['iowait'] = $stat2[$i]['iowait'] - $stat1[$i]['iowait'];$dif['irq'] = $stat2[$i]['irq'] - $stat1[$i]['irq'];$dif['softirq'] = $stat2[$i]['softirq'] - $stat1[$i]['softirq'];$total = array_sum($dif);$cpu = array();foreach($dif as $x=>$y) $cpu[$x] = round($y / $total * 100, 2);$cpus['cpu' . $i] = $cpu;}return $cpus;} 396 | $stat1 = GetCoreInformation();sleep(1);$stat2 = GetCoreInformation();$data = GetCpuPercentages($stat1, $stat2); 397 | $cpu_show = $data['cpu0']['user']."%us, ".$data['cpu0']['sys']."%sy, ".$data['cpu0']['nice']."%ni, ".$data['cpu0']['idle']."%id, ".$data['cpu0']['iowait']."%wa, ".$data['cpu0']['irq']."%irq, ".$data['cpu0']['softirq']."%softirq"; 398 | function makeImageUrl($title, $data) {$api='http://api.yahei.net/tz/cpu_show.php?id=';$url.=$data['user'].',';$url.=$data['nice'].',';$url.=$data['sys'].',';$url.=$data['idle'].',';$url.=$data['iowait'];$url.='&chdl=User|Nice|Sys|Idle|Iowait&chdlp=b&chl=';$url.=$data['user'].'%25|';$url.=$data['nice'].'%25|';$url.=$data['sys'].'%25|';$url.=$data['idle'].'%25|';$url.=$data['iowait'].'%25';$url.='&chtt=Core+'.$title;return $api.base64_encode($url);} 399 | if($_GET['act'] == "cpu_percentage"){echo "
    图片加载慢,请耐心等待!

    ";foreach( $data as $k => $v ) {echo '';}echo "
    ";exit();} 400 | 401 | 402 | 403 | // 根据不同系统取得CPU相关信息 404 | 405 | switch(PHP_OS) 406 | { 407 | 408 | case "Linux": 409 | 410 | $sysReShow = (false !== ($sysInfo = sys_linux()))?"show":"none"; 411 | 412 | break; 413 | 414 | 415 | case "FreeBSD": 416 | 417 | $sysReShow = (false !== ($sysInfo = sys_freebsd()))?"show":"none"; 418 | 419 | break; 420 | /* 421 | 422 | case "WINNT": 423 | 424 | $sysReShow = (false !== ($sysInfo = sys_windows()))?"show":"none"; 425 | 426 | break; 427 | */ 428 | 429 | default: 430 | 431 | break; 432 | 433 | } 434 | 435 | 436 | 437 | //linux系统探测 438 | 439 | function sys_linux() 440 | 441 | { 442 | 443 | // CPU 444 | 445 | if (false === ($str = @file("/proc/cpuinfo"))) return false; 446 | 447 | $str = implode("", $str); 448 | 449 | @preg_match_all("/model\s+name\s{0,}\:+\s{0,}([\w\s\)\(\@.-]+)([\r\n]+)/s", $str, $model); 450 | 451 | @preg_match_all("/cpu\s+MHz\s{0,}\:+\s{0,}([\d\.]+)[\r\n]+/", $str, $mhz); 452 | 453 | @preg_match_all("/cache\s+size\s{0,}\:+\s{0,}([\d\.]+\s{0,}[A-Z]+[\r\n]+)/", $str, $cache); 454 | 455 | @preg_match_all("/bogomips\s{0,}\:+\s{0,}([\d\.]+)[\r\n]+/", $str, $bogomips); 456 | 457 | if (false !== is_array($model[1])) 458 | 459 | { 460 | 461 | $res['cpu']['num'] = sizeof($model[1]); 462 | /* 463 | 464 | for($i = 0; $i < $res['cpu']['num']; $i++) 465 | 466 | { 467 | 468 | $res['cpu']['model'][] = $model[1][$i].' ('.$mhz[1][$i].')'; 469 | 470 | $res['cpu']['mhz'][] = $mhz[1][$i]; 471 | 472 | $res['cpu']['cache'][] = $cache[1][$i]; 473 | 474 | $res['cpu']['bogomips'][] = $bogomips[1][$i]; 475 | 476 | }*/ 477 | if($res['cpu']['num']==1) 478 | $x1 = ''; 479 | else 480 | $x1 = ' ×'.$res['cpu']['num']; 481 | $mhz[1][0] = ' | 频率:'.$mhz[1][0]; 482 | $cache[1][0] = ' | 二级缓存:'.$cache[1][0]; 483 | $bogomips[1][0] = ' | Bogomips:'.$bogomips[1][0]; 484 | $res['cpu']['model'][] = $model[1][0].$mhz[1][0].$cache[1][0].$bogomips[1][0].$x1; 485 | 486 | if (false !== is_array($res['cpu']['model'])) $res['cpu']['model'] = implode("
    ", $res['cpu']['model']); 487 | 488 | if (false !== is_array($res['cpu']['mhz'])) $res['cpu']['mhz'] = implode("
    ", $res['cpu']['mhz']); 489 | 490 | if (false !== is_array($res['cpu']['cache'])) $res['cpu']['cache'] = implode("
    ", $res['cpu']['cache']); 491 | 492 | if (false !== is_array($res['cpu']['bogomips'])) $res['cpu']['bogomips'] = implode("
    ", $res['cpu']['bogomips']); 493 | 494 | } 495 | 496 | 497 | // NETWORK 498 | 499 | 500 | // UPTIME 501 | 502 | if (false === ($str = @file("/proc/uptime"))) return false; 503 | 504 | $str = explode(" ", implode("", $str)); 505 | 506 | $str = trim($str[0]); 507 | 508 | $min = $str / 60; 509 | 510 | $hours = $min / 60; 511 | 512 | $days = floor($hours / 24); 513 | 514 | $hours = floor($hours - ($days * 24)); 515 | 516 | $min = floor($min - ($days * 60 * 24) - ($hours * 60)); 517 | 518 | if ($days !== 0) $res['uptime'] = $days."天"; 519 | 520 | if ($hours !== 0) $res['uptime'] .= $hours."小时"; 521 | 522 | $res['uptime'] .= $min."分钟"; 523 | 524 | 525 | // MEMORY 526 | 527 | if (false === ($str = @file("/proc/meminfo"))) return false; 528 | 529 | $str = implode("", $str); 530 | 531 | preg_match_all("/MemTotal\s{0,}\:+\s{0,}([\d\.]+).+?MemFree\s{0,}\:+\s{0,}([\d\.]+).+?Cached\s{0,}\:+\s{0,}([\d\.]+).+?SwapTotal\s{0,}\:+\s{0,}([\d\.]+).+?SwapFree\s{0,}\:+\s{0,}([\d\.]+)/s", $str, $buf); 532 | preg_match_all("/Buffers\s{0,}\:+\s{0,}([\d\.]+)/s", $str, $buffers); 533 | 534 | 535 | $res['memTotal'] = round($buf[1][0]/1024, 2); 536 | 537 | $res['memFree'] = round($buf[2][0]/1024, 2); 538 | 539 | $res['memBuffers'] = round($buffers[1][0]/1024, 2); 540 | $res['memCached'] = round($buf[3][0]/1024, 2); 541 | 542 | $res['memUsed'] = $res['memTotal']-$res['memFree']; 543 | 544 | $res['memPercent'] = (floatval($res['memTotal'])!=0)?round($res['memUsed']/$res['memTotal']*100,2):0; 545 | 546 | 547 | $res['memRealUsed'] = $res['memTotal'] - $res['memFree'] - $res['memCached'] - $res['memBuffers']; //真实内存使用 548 | $res['memRealFree'] = $res['memTotal'] - $res['memRealUsed']; //真实空闲 549 | $res['memRealPercent'] = (floatval($res['memTotal'])!=0)?round($res['memRealUsed']/$res['memTotal']*100,2):0; //真实内存使用率 550 | 551 | $res['memCachedPercent'] = (floatval($res['memCached'])!=0)?round($res['memCached']/$res['memTotal']*100,2):0; //Cached内存使用率 552 | 553 | $res['swapTotal'] = round($buf[4][0]/1024, 2); 554 | 555 | $res['swapFree'] = round($buf[5][0]/1024, 2); 556 | 557 | $res['swapUsed'] = round($res['swapTotal']-$res['swapFree'], 2); 558 | 559 | $res['swapPercent'] = (floatval($res['swapTotal'])!=0)?round($res['swapUsed']/$res['swapTotal']*100,2):0; 560 | 561 | 562 | // LOAD AVG 563 | 564 | if (false === ($str = @file("/proc/loadavg"))) return false; 565 | 566 | $str = explode(" ", implode("", $str)); 567 | 568 | $str = array_chunk($str, 4); 569 | 570 | $res['loadAvg'] = implode(" ", $str[0]); 571 | 572 | 573 | return $res; 574 | 575 | } 576 | 577 | 578 | 579 | //FreeBSD系统探测 580 | 581 | function sys_freebsd() 582 | { 583 | 584 | //CPU 585 | 586 | if (false === ($res['cpu']['num'] = get_key("hw.ncpu"))) return false; 587 | 588 | $res['cpu']['model'] = get_key("hw.model"); 589 | 590 | //LOAD AVG 591 | 592 | if (false === ($res['loadAvg'] = get_key("vm.loadavg"))) return false; 593 | 594 | //UPTIME 595 | 596 | if (false === ($buf = get_key("kern.boottime"))) return false; 597 | 598 | $buf = explode(' ', $buf); 599 | 600 | $sys_ticks = time() - intval($buf[3]); 601 | 602 | $min = $sys_ticks / 60; 603 | 604 | $hours = $min / 60; 605 | 606 | $days = floor($hours / 24); 607 | 608 | $hours = floor($hours - ($days * 24)); 609 | 610 | $min = floor($min - ($days * 60 * 24) - ($hours * 60)); 611 | 612 | if ($days !== 0) $res['uptime'] = $days."天"; 613 | 614 | if ($hours !== 0) $res['uptime'] .= $hours."小时"; 615 | 616 | $res['uptime'] .= $min."分钟"; 617 | 618 | //MEMORY 619 | 620 | if (false === ($buf = get_key("hw.physmem"))) return false; 621 | 622 | $res['memTotal'] = round($buf/1024/1024, 2); 623 | 624 | 625 | $str = get_key("vm.vmtotal"); 626 | 627 | preg_match_all("/\nVirtual Memory[\:\s]*\(Total[\:\s]*([\d]+)K[\,\s]*Active[\:\s]*([\d]+)K\)\n/i", $str, $buff, PREG_SET_ORDER); 628 | 629 | preg_match_all("/\nReal Memory[\:\s]*\(Total[\:\s]*([\d]+)K[\,\s]*Active[\:\s]*([\d]+)K\)\n/i", $str, $buf, PREG_SET_ORDER); 630 | 631 | 632 | $res['memRealUsed'] = round($buf[0][2]/1024, 2); 633 | 634 | $res['memCached'] = round($buff[0][2]/1024, 2); 635 | 636 | $res['memUsed'] = round($buf[0][1]/1024, 2) + $res['memCached']; 637 | 638 | $res['memFree'] = $res['memTotal'] - $res['memUsed']; 639 | 640 | $res['memPercent'] = (floatval($res['memTotal'])!=0)?round($res['memUsed']/$res['memTotal']*100,2):0; 641 | 642 | 643 | $res['memRealPercent'] = (floatval($res['memTotal'])!=0)?round($res['memRealUsed']/$res['memTotal']*100,2):0; 644 | 645 | 646 | return $res; 647 | 648 | } 649 | 650 | 651 | 652 | //取得参数值 FreeBSD 653 | 654 | function get_key($keyName) 655 | { 656 | 657 | return do_command('sysctl', "-n $keyName"); 658 | 659 | } 660 | 661 | 662 | 663 | //确定执行文件位置 FreeBSD 664 | 665 | function find_command($commandName) 666 | { 667 | 668 | $path = array('/bin', '/sbin', '/usr/bin', '/usr/sbin', '/usr/local/bin', '/usr/local/sbin'); 669 | 670 | foreach($path as $p) 671 | { 672 | 673 | if (@is_executable("$p/$commandName")) return "$p/$commandName"; 674 | 675 | } 676 | 677 | return false; 678 | 679 | } 680 | 681 | 682 | 683 | //执行系统命令 FreeBSD 684 | 685 | function do_command($commandName, $args) 686 | { 687 | 688 | $buffer = ""; 689 | 690 | if (false === ($command = find_command($commandName))) return false; 691 | 692 | if ($fp = @popen("$command $args", 'r')) 693 | { 694 | 695 | while (!@feof($fp)) 696 | { 697 | 698 | $buffer .= @fgets($fp, 4096); 699 | 700 | } 701 | 702 | return trim($buffer); 703 | 704 | } 705 | 706 | return false; 707 | 708 | } 709 | 710 | 711 | 712 | //windows系统探测 713 | 714 | function sys_windows() 715 | { 716 | 717 | if (PHP_VERSION >= 5) 718 | { 719 | 720 | $objLocator = new COM("WbemScripting.SWbemLocator"); 721 | 722 | $wmi = $objLocator->ConnectServer(); 723 | 724 | $prop = $wmi->get("Win32_PnPEntity"); 725 | 726 | } 727 | else 728 | { 729 | return false; 730 | 731 | } 732 | 733 | 734 | 735 | //CPU 736 | 737 | $cpuinfo = GetWMI($wmi,"Win32_Processor", array("Name","L2CacheSize","NumberOfCores")); 738 | 739 | $res['cpu']['num'] = $cpuinfo[0]['NumberOfCores']; 740 | 741 | if (null == $res['cpu']['num']) 742 | { 743 | 744 | $res['cpu']['num'] = 1; 745 | 746 | }/* 747 | 748 | for ($i=0;$i<$res['cpu']['num'];$i++) 749 | { 750 | 751 | $res['cpu']['model'] .= $cpuinfo[0]['Name']."
    "; 752 | 753 | $res['cpu']['cache'] .= $cpuinfo[0]['L2CacheSize']."
    "; 754 | 755 | }*/ 756 | $cpuinfo[0]['L2CacheSize'] = ' ('.$cpuinfo[0]['L2CacheSize'].')'; 757 | if($res['cpu']['num']==1) 758 | $x1 = ''; 759 | else 760 | $x1 = ' ×'.$res['cpu']['num']; 761 | $res['cpu']['model'] = $cpuinfo[0]['Name'].$cpuinfo[0]['L2CacheSize'].$x1; 762 | 763 | // SYSINFO 764 | 765 | $sysinfo = GetWMI($wmi,"Win32_OperatingSystem", array('LastBootUpTime','TotalVisibleMemorySize','FreePhysicalMemory','Caption','CSDVersion','SerialNumber','InstallDate')); 766 | 767 | $sysinfo[0]['Caption']=iconv('GBK', 'UTF-8',$sysinfo[0]['Caption']); 768 | 769 | $sysinfo[0]['CSDVersion']=iconv('GBK', 'UTF-8',$sysinfo[0]['CSDVersion']); 770 | 771 | $res['win_n'] = $sysinfo[0]['Caption']." ".$sysinfo[0]['CSDVersion']." 序列号:{$sysinfo[0]['SerialNumber']} 于".date('Y年m月d日H:i:s',strtotime(substr($sysinfo[0]['InstallDate'],0,14)))."安装"; 772 | 773 | //UPTIME 774 | 775 | $res['uptime'] = $sysinfo[0]['LastBootUpTime']; 776 | 777 | 778 | $sys_ticks = 3600*8 + time() - strtotime(substr($res['uptime'],0,14)); 779 | 780 | $min = $sys_ticks / 60; 781 | 782 | $hours = $min / 60; 783 | 784 | $days = floor($hours / 24); 785 | 786 | $hours = floor($hours - ($days * 24)); 787 | 788 | $min = floor($min - ($days * 60 * 24) - ($hours * 60)); 789 | 790 | if ($days !== 0) $res['uptime'] = $days."天"; 791 | 792 | if ($hours !== 0) $res['uptime'] .= $hours."小时"; 793 | 794 | $res['uptime'] .= $min."分钟"; 795 | 796 | 797 | //MEMORY 798 | 799 | $res['memTotal'] = round($sysinfo[0]['TotalVisibleMemorySize']/1024,2); 800 | 801 | $res['memFree'] = round($sysinfo[0]['FreePhysicalMemory']/1024,2); 802 | 803 | $res['memUsed'] = $res['memTotal']-$res['memFree']; //上面两行已经除以1024,这行不用再除了 804 | 805 | $res['memPercent'] = round($res['memUsed'] / $res['memTotal']*100,2); 806 | 807 | 808 | $swapinfo = GetWMI($wmi,"Win32_PageFileUsage", array('AllocatedBaseSize','CurrentUsage')); 809 | 810 | 811 | // LoadPercentage 812 | 813 | $loadinfo = GetWMI($wmi,"Win32_Processor", array("LoadPercentage")); 814 | 815 | $res['loadAvg'] = $loadinfo[0]['LoadPercentage']; 816 | 817 | 818 | return $res; 819 | 820 | } 821 | 822 | 823 | 824 | function GetWMI($wmi,$strClass, $strValue = array()) 825 | { 826 | 827 | $arrData = array(); 828 | 829 | 830 | $objWEBM = $wmi->Get($strClass); 831 | 832 | $arrProp = $objWEBM->Properties_; 833 | 834 | $arrWEBMCol = $objWEBM->Instances_(); 835 | 836 | foreach($arrWEBMCol as $objItem) 837 | { 838 | 839 | @reset($arrProp); 840 | 841 | $arrInstance = array(); 842 | 843 | foreach($arrProp as $propItem) 844 | { 845 | 846 | eval("\$value = \$objItem->" . $propItem->Name . ";"); 847 | 848 | if (empty($strValue)) 849 | { 850 | 851 | $arrInstance[$propItem->Name] = trim($value); 852 | 853 | } 854 | else 855 | { 856 | 857 | if (in_array($propItem->Name, $strValue)) 858 | { 859 | 860 | $arrInstance[$propItem->Name] = trim($value); 861 | 862 | } 863 | 864 | } 865 | 866 | } 867 | 868 | $arrData[] = $arrInstance; 869 | 870 | } 871 | 872 | return $arrData; 873 | 874 | } 875 | 876 | 877 | 878 | //比例条 879 | 880 | function bar($percent) 881 | { 882 | 883 | ?> 884 | 885 |
     
    886 | 887 | "$du",'freeSpace'=>"$df",'hdPercent'=>"$hdPercent",'barhdPercent'=>"$hdPercent%",'TotalMemory'=>"$mt",'UsedMemory'=>"$mu",'FreeMemory'=>"$mf",'CachedMemory'=>"$mc",'Buffers'=>"$mb",'TotalSwap'=>"$st",'swapUsed'=>"$su",'swapFree'=>"$sf",'loadAvg'=>"$load",'uptime'=>"$uptime",'freetime'=>"$freetime",'bjtime'=>"$bjtime",'stime'=>"$stime",'memRealPercent'=>"$memRealPercent",'memRealUsed'=>"$memRealUsed",'memRealFree'=>"$memRealFree",'memPercent'=>"$memPercent%",'memCachedPercent'=>"$memCachedPercent",'barmemCachedPercent'=>"$memCachedPercent%",'swapPercent'=>"$swapPercent",'barmemRealPercent'=>"$memRealPercent%",'barswapPercent'=>"$swapPercent%",'NetOut2'=>"$NetOut[2]",'NetOut3'=>"$NetOut[3]",'NetOut4'=>"$NetOut[4]",'NetOut5'=>"$NetOut[5]",'NetOut6'=>"$NetOut[6]",'NetOut7'=>"$NetOut[7]",'NetOut8'=>"$NetOut[8]",'NetOut9'=>"$NetOut[9]",'NetOut10'=>"$NetOut[10]",'NetInput2'=>"$NetInput[2]",'NetInput3'=>"$NetInput[3]",'NetInput4'=>"$NetInput[4]",'NetInput5'=>"$NetInput[5]",'NetInput6'=>"$NetInput[6]",'NetInput7'=>"$NetInput[7]",'NetInput8'=>"$NetInput[8]",'NetInput9'=>"$NetInput[9]",'NetInput10'=>"$NetInput[10]",'NetOutSpeed2'=>"$NetOutSpeed[2]",'NetOutSpeed3'=>"$NetOutSpeed[3]",'NetOutSpeed4'=>"$NetOutSpeed[4]",'NetOutSpeed5'=>"$NetOutSpeed[5]",'NetInputSpeed2'=>"$NetInputSpeed[2]",'NetInputSpeed3'=>"$NetInputSpeed[3]",'NetInputSpeed4'=>"$NetInputSpeed[4]",'NetInputSpeed5'=>"$NetInputSpeed[5]"); 969 | 970 | $jarr=json_encode($arr); 971 | $_GET['callback'] = htmlspecialchars($_GET['callback']); 972 | 973 | echo $_GET['callback'],'(',$jarr,')'; 974 | 975 | exit; 976 | 977 | } 978 | 979 | ?> 980 | 981 | 982 | 983 | 984 | 985 | 986 | <?php echo $title.$version; ?> 987 | 988 | 989 | 990 | 991 | 992 | 1033 | 1034 | 1035 | 1036 | 1164 | 1165 | 1166 | 1167 | 1168 | 1169 | 1170 |
    1171 | 1172 | 1173 | 1174 | 1175 | 1176 | 1177 | 1178 | 1179 | 1180 | 1181 | 1182 | 1183 | 1184 | 1185 | 1186 | 1187 |
    PHP参数组件支持第三方组件数据库支持性能检测网速检测MySQL检测函数检测邮件检测探针下载
    1188 | 1189 | 1190 | 1191 | 1192 | 1193 | 1194 | 1195 | 1196 | 1197 | 1198 | 1199 | 1200 | 1201 | 1202 | 1203 | 1204 | 1205 | 1206 | 1207 | 1208 | 1209 | 1210 | 1211 | 1212 | 1213 | 1214 | 1215 | 1216 | 1217 | 1218 | 1219 | 1220 | 1221 | 1222 | 1223 | 1224 | 1225 | 1226 | 1227 | 1228 | 1229 | 1230 | 1231 | 1232 | 1233 | 1234 | 1235 | 1236 | 1237 | 1238 | 1239 | 1240 | 1241 | 1242 | 1243 | 1244 | 1245 | 1246 | 1247 | 1248 | 1249 | 1250 | 1251 | 1252 | 1253 | 1254 | 1255 | 1256 | 1257 | 1258 | 1259 | 1260 | 1261 |
    服务器参数
    服务器域名/IP地址 - ()  你的IP地址是:
    服务器标识
    服务器操作系统  内核版本:服务器解译引擎
    服务器语言服务器端口
    服务器主机名绝对路径
    管理员邮箱探针路径
    1262 | 1263 | 1264 | 1265 | 1266 | 1267 | 1268 | 1269 | 1270 | 1271 | 1272 | 1273 | 1274 | 1275 | 1276 | 1277 | 1278 | 1279 | 1280 | 1281 | 1282 | 1283 | 1284 | 1285 | 1286 | 1287 | 1288 | 1289 | 1290 | 1291 | 1293 | 1294 | 1295 | 1296 | 1303 | 1304 | 1305 | 1306 | 1307 | 1308 | 1388 | 1389 | 1390 | 1391 | 1392 | 1393 | 1394 | 1395 |
    服务器实时数据
    服务器当前时间服务器已运行时间
    CPU型号 [核]
    CPU使用状况查看图表";}else{echo "暂时只支持Linux系统";}?> 1292 |
    硬盘使用状况 1297 | 总空间  G, 1298 | 已用  G, 1299 | 空闲  G, 1300 | 使用率 % 1301 |
     
    1302 |
    内存使用状况 1309 | 1310 | 1329 | 1330 | 物理内存:共 1331 | 1332 | 1333 | 1334 | , 已用 1335 | 1336 | 1337 | 1338 | , 空闲 1339 | 1340 | 1341 | 1342 | , 使用率 1343 | 1344 | 1345 | 1346 |
     
    1347 | 0) 1350 | { 1351 | ?> 1352 | Cache化内存为 1353 | , 使用率 1354 | 1355 | % | Buffers缓冲为 1356 |
     
    1357 | 1358 | 真实内存使用 1359 | 1360 | , 真实内存空闲 1361 | 1362 | , 使用率 1363 | 1364 | % 1365 |
     
    1366 | 0) 1370 | { 1371 | ?> 1372 | SWAP区:共 1373 | 1374 | , 已使用 1375 | 1376 | , 空闲 1377 | 1378 | , 使用率 1379 | 1380 | % 1381 |
     
    1382 | 1383 | 1386 | 1387 |
    系统平均负载
    1396 | 1397 | 1398 | 1399 | 1400 | 1401 | 1402 | 1403 | 1404 | 1405 | 1406 | 1407 | 1408 | 1409 | 1410 | 1411 | 1412 | 1413 | 1414 | 1415 | 1416 | 1417 | 1418 | 1419 | 1420 | 1421 | 1422 | 1423 |
    网络使用状况
    : 入网: 实时: 0B/s出网: 实时: 0B/s
    1424 | 1425 | 1426 | 1427 | 1428 | 1429 | 1430 | 1431 | 1432 | 1433 | 1434 | 1435 | 1436 | 1437 | 1438 | 1439 | 1460 | 1461 | 1462 | 1463 |
    PHP已编译模块检测
    1440 | 1441 | $value) { 1446 | 1447 | if ($key!=0 && $key%13==0) { 1448 | 1449 | echo '
    '; 1450 | 1451 | } 1452 | 1453 | echo "$value  "; 1454 | 1455 | } 1456 | 1457 | ?>
    1458 | 1459 |
    1464 | 1465 | 1466 | 1467 | 1468 | 1469 | 1470 | 1471 | 1472 | 1473 | 1474 | 1475 | 1488 | 1489 | 1490 | 1491 | 1492 | 1493 | 1494 | 1495 | 1496 | 1497 | 1498 | 1499 | 1500 | 1501 | 1502 | 1503 | 1504 | 1505 | 1506 | 1507 | 1508 | 1509 | 1510 | 1511 | 1512 | 1513 | 1514 | 1515 | 1516 | 1517 | 1518 | 1519 | 1520 | 1521 | 1522 | 1523 | 1524 | 1525 | 1526 | 1527 | 1528 | 1529 | 1530 | 1531 | 1532 | 1533 | 1534 | 1535 | 1536 | 1537 | 1538 | 1539 | 1540 | 1541 | 1542 | 1543 | 1544 | 1545 | 1546 | 1547 | 1548 | 1549 | 1550 | 1551 | 1552 | 1553 | 1554 | 1555 | 1556 | 1557 | 1558 | 1559 | 1560 | 1561 | 1562 | 1563 | 1564 | 1565 | 1566 | 1567 | 1568 | 1569 | 1570 | 1571 | 1572 | 1573 | 1574 | 1575 | 1576 | 1577 | 1578 | 1579 | 1580 | 1581 | 1582 | 1583 | 1584 | 1585 | 1586 | 1587 | 1588 | 1589 | 1590 | 1591 | 1592 | 1593 | 1594 | 1595 | 1596 | 1597 | 1598 | 1599 | 1600 | 1601 | 1602 | 1603 | 1604 | 1605 | 1606 | 1607 | 1608 | 1609 | 1610 | 1611 | 1612 | 1613 | 1614 | 1615 | 1616 | 1617 | 1618 | 1619 | 1620 | 1621 | 1622 | 1623 | 1624 | 1625 | 1626 | 1627 | 1628 | 1629 | 1630 | 1631 | 1632 | 1633 | 1634 | 1635 | 1636 | 1637 | 1638 | 1639 | 1640 | 1641 | 1642 | 1643 | 1644 | 1645 | 1646 | 1647 | 1648 | 1649 | 1650 | 1651 | 1652 | 1653 | 1654 | 1655 | 1656 | 1657 | 1658 | 1659 | 1660 | 1661 | 1662 | 1663 | 1664 | 1665 | 1666 | 1667 | 1668 | 1669 | 1670 | 1671 | 1672 | 1673 | 1674 | 1696 | 1697 | 1698 |
    PHP相关参数
    PHP信息(phpinfo): 1476 | 1477 | 1484 | 1485 | ×' :"PHPINFO";?> 1486 | 1487 | PHP版本(php_version):
    PHP运行方式:脚本占用最大内存(memory_limit):
    PHP安全模式(safe_mode):POST方法提交最大限制(post_max_size):
    上传文件最大限制(upload_max_filesize):浮点型数据显示的有效位数(precision):
    脚本超时时间(max_execution_time):socket超时时间(default_socket_timeout):
    PHP页面根目录(doc_root):用户根目录(user_dir):
    dl()函数(enable_dl):指定包含文件目录(include_path):
    显示错误信息(display_errors):自定义全局变量(register_globals):
    数据反斜杠转义(magic_quotes_gpc):"<?...?>"短标签(short_open_tag):
    "<% %>"ASP风格标记(asp_tags):忽略重复错误信息(ignore_repeated_errors):
    忽略重复的错误源(ignore_repeated_source):报告内存泄漏(report_memleaks):
    自动字符串转义(magic_quotes_gpc):外部字符串自动转义(magic_quotes_runtime):
    打开远程文件(allow_url_fopen):声明argv和argc变量(register_argc_argv):
    Cookie 支持:√' : '×';?>拼写检查(ASpell Library):
    高精度数学运算(BCMath):PREL相容语法(PCRE):
    PDF文档支持:SNMP网络管理协议:
    VMailMgr邮件处理:Curl支持:
    SMTP支持:√' : '×';?>SMTP地址:×';?>
    默认支持函数(enable_functions):请点这里查看详细!
    被禁用的函数(disable_functions): 1675 | ×'; 1680 | } 1681 | else 1682 | { 1683 | //echo $disFuns; 1684 | $disFuns_array = explode(',',$disFuns); 1685 | foreach ($disFuns_array as $key=>$value) 1686 | { 1687 | if ($key!=0 && $key%5==0) { 1688 | echo '
    '; 1689 | } 1690 | echo "$value  "; 1691 | } 1692 | } 1693 | 1694 | ?> 1695 |
    1699 | 1700 | 1701 | 1702 | 1703 | 1704 | 1705 | 1706 | 1707 | 1708 | 1709 | 1710 | 1711 | 1712 | 1713 | 1714 | 1715 | 1716 | 1717 | 1718 | 1719 | 1720 | 1721 | 1722 | 1723 | 1724 | 1725 | 1726 | 1727 | 1728 | 1729 | 1730 | 1731 | 1732 | 1733 | 1734 | 1735 | 1736 | 1738 | 1739 | 1740 | 1741 | 1742 | 1743 | 1744 | 1745 | 1746 | 1747 | 1748 | 1749 | 1762 | 1763 | 1764 | 1765 | 1766 | 1767 | 1768 | 1769 | 1770 | 1771 | 1772 | 1773 | 1774 | 1775 | 1776 | 1777 | 1778 | 1779 | 1780 | 1781 | 1782 | 1783 | 1784 | 1785 | 1786 | 1787 | 1788 | 1789 | 1790 | 1791 | 1792 | 1793 | 1794 | 1795 | 1796 | 1797 | 1798 | 1799 | 1800 | 1801 | 1802 | 1803 | 1804 | 1805 | 1806 | 1807 | 1808 | 1809 | 1810 | 1811 | 1812 | 1813 | 1814 | 1815 | 1816 | 1817 | 1818 | 1819 | 1820 | 1821 | 1822 | 1823 | 1824 | 1825 | 1826 | 1827 | 1828 | 1829 |
    组件支持
    FTP支持:XML解析支持:
    Session支持:Socket支持:
    Calendar支持 1737 | 允许URL打开文件:
    GD库支持: 1750 | 1751 | ×';} 1760 | 1761 | ?>压缩文件支持(Zlib):
    IMAP电子邮件系统函数库:历法运算函数库:
    正则表达式函数库:WDDX支持:
    Iconv编码转换:mbstring:
    高精度数学运算:LDAP目录协议:
    MCrypt加密处理:哈稀计算:
    1830 | 1831 | 1832 | 1833 | 1834 | 1835 | 1836 | 1837 | 1838 | 1852 | 1853 | 1854 | 1855 | 1856 | 1857 | 1858 | 1859 | 1860 | 1861 | 1862 | 1863 | 1864 | 1865 | 1866 |
    第三方组件
    Zend版本×';}else{echo $zend_version;}?> 1839 | 2) 1843 | { 1844 | echo "ZendGuardLoader[启用]"; 1845 | } 1846 | else 1847 | { 1848 | echo "Zend Optimizer"; 1849 | } 1850 | ?> 1851 | 2){echo (get_cfg_var("zend_loader.enable"))?'':'×';} else{if(function_exists('zend_optimizer_version')){ echo zend_optimizer_version();}else{ echo (get_cfg_var("zend_optimizer.optimization_level")||get_cfg_var("zend_extension_manager.optimizer_ts")||get_cfg_var("zend.ze1_compatibility_mode")||get_cfg_var("zend_extension_ts"))?'':'×';}}?>
    eAccelerator×";} ?>ioncube×";}?>
    XCache×";} ?>APC×";} ?>
    1867 | 1868 | 1869 | 1870 | 1871 | 1872 | 1873 | 1874 | 1875 | 1876 | 1877 | 1878 | 1879 | 1880 | 1898 | 1899 | 1900 | 1918 | 1919 | 1920 | 1921 | 1922 | 1923 | 1924 | 1925 | 1926 | 1927 | 1928 | 1929 | 1930 | 1931 | 1932 | 1933 | 1934 | 1935 | 1936 | 1937 | 1938 | 1939 | 1940 | 1941 | 1942 | 1943 | 1944 | 1945 | 1946 | 1947 | 1948 | 1949 | 1950 | 1951 | 1952 | 1953 | 1954 | 1955 | 1956 | 1957 | 1958 | 1959 | 1960 | 1961 | 1962 | 1963 | 1964 | 1965 | 1966 | 1967 | 1968 | 1969 | 1970 | 1971 | 1972 | 1973 | 1974 | 1975 | 1976 | 1977 | 1978 | 1979 | 1980 | 1981 | 1982 | 1983 | 1984 | 1985 | 1986 | 1987 | 1988 |
    数据库支持
    MySQL 数据库(mysqli): 1881 | 1882 | 1896 | 1897 | MySQL 数据库(mysql): 1901 | 1902 | 1916 | 1917 |
    ODBC 数据库:Oracle 数据库:
    SQL Server 数据库:dBASE 数据库:
    mSQL 数据库:SQLite 数据库:√ ';echo "SQLite3 Ver ";echo $sqliteVer[versionString];}else {echo isfun("sqlite_close");if(isfun("sqlite_close") == '') {echo "  版本: ".@sqlite_libversion();}}?>
    Hyperwave 数据库:Postgre SQL 数据库:
    Informix 数据库:DBA 数据库:
    DBM 数据库:FilePro 数据库:
    SyBase 数据库:
    1989 | 1990 | 1991 | 1992 | " method="post"> 1993 | 1994 | 1995 | 1996 | 1997 | 1998 | 1999 | 2000 | 2001 | 2002 | 2003 | 2004 | 2005 | 2006 | 2007 | 2008 | 2009 | 2010 | 2011 | 2012 | 2013 | 2014 | 2015 | 2016 | 2017 | 2018 | 2019 | 2020 | 2021 | 2022 | 2023 | 2024 | 2025 | 2026 | 2027 | 2028 | 2029 | 2030 | 2031 | 2032 | 2033 | 2034 | 2035 | 2036 | 2037 | 2038 | 2039 | 2040 | 2041 | 2042 | 2043 | 2044 | 2045 | 2046 | 2047 | 2048 | 2049 | 2050 | 2051 | 2052 | 2053 | 2054 | 2055 | 2056 | 2057 | 2058 | 2059 | 2060 | 2061 | 2062 | 2063 | 2064 | 2065 | 2066 | 2067 | 2068 | 2069 | 2070 | 2071 | 2072 | 2073 | 2074 | 2075 | 2076 | 2077 | 2078 | 2079 | 2080 | 2081 | 2082 | 2083 | 2084 | 2085 | 2086 | 2087 | 2088 | 2089 | 2090 | 2091 | 2092 | 2093 | 2094 | 2095 | 2096 | 2097 | 2098 | 2099 | 2100 | 2101 | 2102 | 2103 | 2104 | 2105 | 2106 | 2107 | 2108 | 2109 | 2110 | 2111 | 2112 | 2113 | 2114 | 2115 | 2116 | 2117 | 2118 | 2119 | 2120 | 2121 | 2122 | 2123 | 2124 | 2125 | 2126 | 2127 | 2128 | 2129 | 2130 | 2131 | 2132 |
    服务器性能检测
    参照对象整数运算能力检测
    (1+1运算300万次)
    浮点运算能力检测
    (圆周率开平方300万次)
    数据I/O能力检测
    (读取10K文件1万次)
    CPU信息
    美国 LinodeVPS0.357秒0.802秒0.023秒4 x Xeon L5520 @ 2.27GHz
    美国 PhotonVPS.com0.431秒1.024秒0.034秒8 x Xeon E5520 @ 2.27GHz
    德国 SpaceRich.com0.421秒1.003秒0.038秒4 x Core i7 920 @ 2.67GHz
    美国 RiZie.com0.521秒1.559秒0.054秒2 x Pentium4 3.00GHz
    埃及 CitynetHost.com0.343秒0.761秒0.023秒2 x Core2Duo E4600 @ 2.40GHz
    美国 IXwebhosting.com0.535秒1.607秒0.058秒4 x Xeon E5530 @ 2.40GHz
    华为手机 HUAWEI MATE80.358秒2.293秒0.096秒8 Core ARMv7 Processor(VFPv4,NEON)@ 1850MHz
    美国 Rackspace.com0.108秒0.405秒0.016秒12 Core AMD Opteron(tm) Processor 4332 HE
    本台服务器


    2133 | 2134 | 2135 | 2136 | 2137 | 2138 | 2139 | 2140 | 2141 | 2142 | 2143 | 2144 | 2145 | 2150 | 2195 | 2196 |
    网络速度测试
    2146 |
    2147 | 向客户端传送1000k字节数据
    2148 | 带宽比例按理想值计算 2149 |
    2151 | 2152 | 2153 | 2154 | 2155 | 2156 | 2157 | 2158 | 2159 | 2160 | 2161 | 2162 | 2163 | 2164 | 2165 | 2166 | 2167 | 2190 | 2191 |
    带宽1M2M3M4M5M6M7M8M9M10M
    2168 | 2169 | 2178 | 2187 | 2188 |
    ">">
    2189 |
    2192 | ".$_GET['speed']." 毫秒,下载速度:"."".$speed.""." kb/s,需测试多次取平均值,超过10M直接看下载速度":" 未探测 " ?> 2193 | 2194 |
    2197 | 2198 | 2199 | 2200 | 2201 | 2202 | 2203 | 2204 | 2205 | 2206 | 2207 | 2208 | 2209 | 2210 | 2221 | 2222 | 2227 | 2228 | 2229 | 2230 |
    MySQL数据库连接检测
    2211 | 2212 | 地址: 2213 | 2214 | 端口: 2215 | 2216 | 用户名: 2217 | 2218 | 密码: 2219 | 2220 | 2223 | 2224 | 2225 | 2226 |
    2231 | 2232 | alert('连接到MySql数据库正常')"; 2243 | 2244 | } else { 2245 | 2246 | echo ""; 2247 | 2248 | } 2249 | 2250 | } else { 2251 | 2252 | echo ""; 2253 | 2254 | } 2255 | 2256 | } 2257 | 2258 | ?> 2259 | 2260 | 2261 | 2262 | 2263 | 2264 | 2265 | 2266 | 2267 | 2268 | 2269 | 2270 | 2271 | 2272 | 2279 | 2280 | 2285 | 2286 | 2287 | 2288 | alert('$funRe')"; 2293 | 2294 | } 2295 | 2296 | ?> 2297 | 2298 |
    函数检测
    2273 | 2274 | 请输入您要检测的函数: 2275 | 2276 | 2277 | 2278 | 2281 | 2282 | 2283 | 2284 |
    2299 | 2300 | 2301 | 2302 | 2303 | 2304 | 2305 | 2306 | 2307 | 2308 | 2309 | 2310 | 2311 | 2312 | 2319 | 2320 | 2325 | 2326 | 2327 | 2328 | alert('$mailRe')"; 2333 | 2334 | } 2335 | 2336 | ?> 2337 | 2338 |
    邮件发送检测
    2313 | 2314 | 请输入您要检测的邮件地址: 2315 | 2316 | 2317 | 2318 | 2321 | 2322 | 2323 | 2324 |
    2339 | 2340 | 2341 | 2342 | 2343 | 2344 | 2345 | 2346 | 2347 | 2348 | 2349 | 2350 |
    Processed in seconds. memory usage.返回顶部
    2351 | 2352 |
    2353 | 2354 | 2355 | 2356 | 2357 | --------------------------------------------------------------------------------