欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

BOOM 网站宝贝 2.0(PHP版的资源管理器)

程序员文章站 2022-06-09 18:26:04
...

?php /* =====================《BOOM 网站宝贝 2.0》 基本配置 =================== */ //--程序使用方式:0为不用登陆即可使用;1为要输入管理员密码才能使用。 $set[mode]=0; //--管理员密码:这里设置的密码是经过MD5加密的字符串,而不是明码。 $set[pa

/* =====================《BOOM 网站宝贝 2.0》 基本配置 =================== */

//--程序使用方式:"0"为不用登陆即可使用;"1"为要输入管理员密码才能使用。
$set[mode]="0";

//--管理员密码:这里设置的密码是经过MD5加密的字符串,而不是明码。
$set[password]="409fdb9a2ae22771f9926c98fc54ee18";

/* ============================ 配置结束 ================================ */


if($_GET[dir]!=""){ $dir=$_GET[dir];}
elseif($_POST[dir]!=""){ $dir=$_POST[dir];}
else{ $dir="./";}

$style_head="


→┆BOOM网站宝贝 v2.0┆ {title}←














管理员操作:[登陆|退出]
当前打开目录:".realpath($dir)."
当前操作:{title}

";


function getmicrotime()
{ //----执行时间
list($usec, $sec) = explode(" ",microtime());
return ($usec + $sec);
}

function error_info($info,$url="javascript:history.back(1)")
{ //----错误提示
echo"



$info
";
exit;
}

function skin_var($var1,$var2)
{ //----替换页面变量
global $style_head;
$style_head=eregi_replace("/{$var1/}",$var2,$style_head);
}

/* ========================== 函数结束,开始程序 ========================= */


if($_GET[login]=="2"){
/*------------------------ 检测密码,并生成Cookie ----------------------*/
$password=md5($_POST[password]);
if ( $password != $set[password] ) {
error_info("密码错误!登陆失败");
}
$time=time();

if ( $_POST[yxtime] ==3600) {$cookie_time=$time+3600;}
elseif ( $_POST[yxtime] ==10800) {$cookie_time=$time+10800;}
elseif ( $_POST[yxtime] ==86400) {$cookie_time=$time+86400;}
elseif ( $_POST[yxtime] ==2592000) {$cookie_time=$time+2592000;}
else { $cookie_time=0; }

setcookie ("boom_baby","$password","$cookie_time","$_SERVER[PHP_SELF]");

echo"



输入密码正确 | 登陆成功
";
exit;
}

elseif($_GET[login]=="3"){
/*------------------------------ 退出登陆状态 --------------------------*/
setcookie ("boom_baby","00","-9999","$_SERVER[PHP_SELF]");
error_info("已经退出登陆,并清空Cookie");
}

elseif($_GET[login]=="1"){
/*-------------------------------- 登陆界面 ----------------------------*/
echo"














登 陆 管 理
管理员密码:

Cookies设置:
";
exit;
}

$time_start = getmicrotime();

if (($set[mode]=="1") and ($_COOKIE[boom_baby] != $set[password])) {
echo"




抱歉,您没有登陆。无法使用本程序!

>>输入管理员密码登陆
";
exit;
}


chdir($dir);
$open=opendir("./");


if($_GET[m]=="show"){
//-------------------------------- 查看内容 --------------------------------
if($_GET[id] != ""){
if(file_exists("$_GET[id]")){
$fp=fopen($_GET[id],r);
$data=fread($fp,"9999999");
fclose($fp);

$data=str_replace("","[/textarea]",$data);
$data=str_replace("","[/textarea]",$data);
$data=str_replace(" $data=str_replace("




可编辑txt/html/css/js/php/cgi/asp/jsp等所有文本类文件

注意: 所编辑文件


程序会自动将“<textarea”转换成“[textarea”、“</textarea>”转换成“[/textarea]”显示出来。

当文件保存时程序会自动再将“[textarea”还原回“<textarea”、“[/textarea]”还原回“</textarea>”。

-----特此提醒使用者!!!

";
}

elseif($_GET[m]=="write"){
//-------------------------------- 写文件 --------------------------------
$data=stripslashes($_POST[data]);
$data=str_replace("[/textarea]","",$data);
$data=str_replace("[textarea","


elseif($_GET[m]=="mkdir"){
//------------------------------ 创建新目录 -------------------------------
skin_var(title,"创建新目录");
echo"{$style_head}



";

if($_GET[id] != ""){
if(!file_exists($_GET[id])){mkdir($_GET[id],0755);echo"目录“{$_GET[id]}”创建成功

程序5秒钟后自动返回查看";}
else{echo"目录“{$_GET[id]}”已经存在";}
}
else{echo"请输入需要新创建的目录名称";}
echo"

";
}


elseif($_GET[m]=="md5"){
//-------------------------- 输入需MD5加密的字符 ---------------------------
skin_var(title,"输入需加密的字符");
echo"{$style_head}





需要加密的字符:

";
}


elseif($_GET[m]=="showmd5"){
//------------------------------ 显示MD5加密后 -----------------------------
$word=md5($_POST[word]);
skin_var(title,"显示MD5加密后的字符串");
echo"{$style_head}




经过MD5加密后生成的字符串:
";
}

elseif($_GET[m]=="code"){
//-------------------------------- 代码生成 --------------------------------
skin_var(title,"输入代码");
echo"{$style_head}





这个功能的用处在于生成大量相近的连续代码。

举个例子来说吧:

如果要在网站资料中加上“http://boom.cpgl.net/”地址下从“001.gif”到“100.gif”的图片,
我难道需要手工一个个插入或是编写代码?

曾经手工编写代码的我做了这个功能。让程序自己产生,而不是我们来编写修改。


我们所需要做的只是设置好需要的字符串/要变化部分的最小值/最大值/。

等程序生成后我们再拷贝代码就OK啦!




前部字符:


初始数:
最大数:


后部字符:




";
}


elseif($_GET[m]=="showcode"){
//-------------------------------- 显示所生成代码 --------------------------------
$all=$_POST[max]-$_POST[minimum]+1;
skin_var(title,"显示代码");
echo"{$style_head}



{$_POST[minimum]}{$_POST[max]}{$all}

";
}


elseif($_GET[m]=="unixdate"){
//------------------------------- unix时间换算 --------------------------------
skin_var(title,"UNIX时间换算");
echo"{$style_head}






将输入的UNIX时间戳记转换为通用公元年月日时分秒

比如:1067762599 计算为 2003年11月02日 16时11分19秒


输入UNIX时间戳记:


注:UNIX时间是从 1970年1月1日8时1分0秒 为起始的以秒为单位的10进制数值。
";
}

elseif($_GET[m]=="showdate"){
//------------------------------ unix时间转换通常时间 -----------------------------
$date=date("Y年m月d日 H时m分s秒",$_POST[data]);

skin_var(title,"UNIX时间转换通常时间");
echo"{$style_head}



时间:$date
";
}

elseif($_POST[m]=="属性"){
//-------------------------------- 输入属性 --------------------------------
skin_var(title,"输入属性值");
echo"{$style_head}




";

if(!$_POST[id][0]){error_info("没有选择要修改属性的项目");}

while ( list($key, $val) = each($_POST[id]) ) {
if($key=="0"){$items=$_POST[id][$key];}
else{$items=$items."|".$_POST[id][$key];}
}

echo"


属性值:



";
}

elseif($_GET[m]=="chmod"){
//-------------------------------- 修改属性 --------------------------------

# $val=(integer)$_POST[val];
# echo"{$_POST[val]}|".gettype($_POST[val])."
{$val}|".gettype($val)."
";

skin_var(title,"修改属性");
echo"{$style_head}



";
if(!$_POST[items]){error_info("!没有选择需要修改属性的目标!");}

$id = explode("|",$_POST[items]);
$val=base_convert($_POST[val],8,10);
# $val=base_convert($val,10,8);
for($i=0; $i if(chmod($id[$i],$val)){echo"修改『{$id[$i]}』属性为[{$_POST[val]}]成功
";}else{;echo"“{$id[$i]}”修改属性失败
";}
}
echo"

";
}

elseif($_POST[m]=="改名"){
//-------------------------------- 改名确认 --------------------------------
if(!$_POST[id][0]){error_info("!没有选择需要改名的目标!");}

skin_var(title,"改名确认");
echo"{$style_head}







文件/目录:

  改名为:


";
}

elseif($_GET[m]=="rename"){
//-------------------------------- 修改名称 --------------------------------
if((!$_POST[id]) or (!$_POST[newname])){error_info("!请选择需要改名的目标,并输入新名称!");}

skin_var(title,"修改名称");
echo"{$style_head}



";

if(rename ($_POST[id],$_POST[newname])){echo"改名成功";}
else{echo"改名操作失败";}
echo"

";
}

elseif($_POST[m]=="删除"){
//-------------------------------- 删除确认 --------------------------------
skin_var(title,"删除操作确认");
echo"{$style_head}



";

if(!$_POST[id][0]){error_info("没有选择要删除的项目
");}
$id_all=count($_POST[id]);

echo"

";

while ( list($key, $val) = each($_POST[id]) ) {
if($key=="0"){$items=$_POST[id][$key];}
else{$items=$items."|".$_POST[id][$key];}

if(is_dir($_POST[id][$key])){$info1="目录";}else{$info1="文件";}
if((is_writeable($_POST[id][$key]))==1){$info2="可删";}else{$info2="不可删";}
echo"

";
}

echo"

{$_POST[id][$key]} $info1 $info2



再次提醒您看清楚路径!误操作将带来不必要的损失!
确定删除以上全部 {$id_all} 项?





若删除目录,程序会自动删除目录下一级的文件和空目录(不包括更深层的目录和文件)
";
}

elseif($_GET[m]=="del"){
//-------------------------------- 开始删除 --------------------------------
skin_var(title,"删除操作");
echo"{$style_head}




";

if(!$_POST[items]){error_info("没有选择要删除的项目");}
$id = explode("|",$_POST[items]);
$i_all=count($id);
echo"删除项目总数:$i_all


";

for($i=0; $i if(is_dir($id[$i])){

chdir($id[$i]);
$open=opendir("./");
for($ii=0; $filename=readdir($open); $ii++){
if(is_dir($filename)){
if(($filename!=".") and ($filename!="..")){ rmdir($filename);}
}
else{ unlink($filename);}
}
chdir("../");
$open=opendir("./");

if(@rmdir($id[$i])){echo"删除目录:{$id[$i]}
";}
else{echo"删除目录{$id[$i]}失败
";}

}
else{
if(@unlink($id[$i])){echo"删除文件:{$id[$i]}
";}
else{echo"删除文件{$id[$i]}失败!
";}
}
}

echo"

";
}


elseif($_GET[m]=="help"){
//-------------------------------- 程序说明 --------------------------------

$phpver=phpversion();
$os=PHP_OS;
$df=round(diskfreespace("/")/1048576);
if (get_cfg_var("safe_mode")){$safe_mode="开启";}else{$safe_mode="关闭";}
$upfile_max = get_cfg_var("upload_max_filesize");
$scriptouttime = get_cfg_var("max_execution_time");
if (get_cfg_var("register_globals")){$register_globals ="On";}else{$register_globals ="Off";}
$post_max_size = get_cfg_var("post_max_size");
$memory_limit= get_cfg_var("memory_limit");

skin_var(title,"信息说明");
echo"{$style_head}




我的IP地址:{$_SERVER[REMOTE_ADDR]}




















主信息:
{$_SERVER[SERVER_SIGNATURE]}
操作系统 {$os}
PHP 版本 {$phpver}
服务器程序 {$_SERVER[SERVER_SOFTWARE]}
磁盘剩余空间 {$df} MB
WWW服务默认路径 {$_SERVER[DOCUMENT_ROOT]}
当前程序所在路径 {$_SERVER[SCRIPT_FILENAME]}
当前程序所在路径 {$_SERVER[PATH_TRANSLATED]}
PHP.ini配置信息:
安全模式 {$safe_mode}
自动全局变量 {$register_globals}
最大上传文件 {$upfile_max}
最大POST上限 {$post_max_size}
最大使用内存 {$memory_limit}
脚本超时时间 {$scriptouttime} sec
[Phpinfo 详细信息!]





功能介绍:
  • 遍历服务器上有足够权限的目录,并列出目录下的文件和子目录信息。
  • 测试文件是否可以读写。1为可,0为否。
  • 在可读的情况下,能查看文件的内容。包括该文件里的敏感信息。
  • 在可写的情况下,能够【上传文件】、【修改属性】、【文件改名】、【编辑文件】、【新建文件】、【新建目录】。
  • 【批量删除文件和空目录】、【批量修改文件和目录属性】。
  • [MD5加密字符]、[批量代码生成]、[UNIX时间戳换算]。
  • 另外还可返回系统环境信息。
  • 管理员登陆功能。
  • 以后会增加更多所能想到的实用功能。


    注意事项:
  • 本程序可无用设置直接使用。但由于功能强大而存在危险性,所以请改名并放在只有你自己知道的地方。最好配置密码使用!
  • 使用本程序也许会获得某些服务器中的敏感信息,但请勿做非法用途!否则后果自负!
  • 由于服务器配置各不相同,无法保证您使用时本程序的全部功能都有效。程序某些功能无法正常执行,返回错误信息也不奇怪。
  • 若要删除文件和目录,请先把要删除目标所在的目录属性改为777,以确保成功。



    程序作者:刀锋战士  2004-06-01

  • ";
    }

    elseif($_GET[m]=="phpinfo"){
    phpinfo();
    exit;
    }


    elseif($_GET[m]=="upfile"){
    //-------------------------------- 文件上传 --------------------------------
    if ($_FILES[upfile][name]==""){error_info("!请选择要上传的文件!
    不然我怎么知道你要上传哪一个?昏!");}
    if (file_exists($_FILES[upfile][name])) {error_info("该目录中已有同名文件,请改名!");}

    move_uploaded_file($_FILES[upfile][tmp_name],$_FILES[upfile][name]);

    skin_var(title,"文件上传");
    echo"{$style_head}




    文件“{$_FILES[upfile][name]}”上传完毕!


    文件大小:{$_FILES[upfile][size]} Byte


    备注:某些情况下可能需要上传2次才能成功。

    ";
    }

    else{
    //-------------------------------- 目录列表 --------------------------------
    if($_GET[showtype]==""){ $showname="所有文件与目录";}
    elseif($_GET[showtype]=="directory"){ $showname="所有目录";}
    else{ $showname="*.{$_GET[showtype]} 文件";}

    skin_var(title,"目录列表");
    echo"{$style_head}












    /n";

    for($i=0; $filename=readdir($open); $i++){
    if(is_dir($filename)){
    if(($_GET[showtype]!="") and ($_GET[showtype]!="directory")){continue;}

    if(($filename==".") or ($filename=="..")){echo"

    ";}
    else{echo"";}
    $fileinfo[2]="";
    $fileinfo[2]="/n";
    }
    echo"


     {$showname}

    文件大小 创建时间 修改时间 属 性 可读 可写 所有者
    [$filename]
    [$filename]";
    $dir_i++;
    }
    else{
    if($_GET[showtype]=="directory"){continue;}
    elseif($_GET[showtype]!=""){
    if(strtolower($_GET[showtype]) != strtolower(substr(strrchr($filename,"."),1))){continue;}
    }

    echo"

    $filename 查看
    ".filesize("{$filename}");
    $file_i++;
    }

    echo"{$fileinfo[2]}

    ".date("y-m-d H:i",filectime("$filename"))." ".date("y-m-d H:i",filemtime("$filename"))." ".substr(decoct(fileperms("$filename")),-3)." ".is_readable($filename)." ".is_writeable($filename)." ".fileowner("{$filename}")."





    总共:{$i}个文件和目录  目录数:{$dir_i}  文件数:{$file_i}
    ";
    }


    /* ================================ 程序尾部样式 ========================= */
    $time_end = getmicrotime();
    $alltime=$time_end-$time_start;
    echo"











    [C:] [D:] [E:] |说明|






    程序执行时间:{$alltime} s

    ...:::::MADE IN BOOM



    ";

    ?>