该函数对小型文件仓库管理,还是够用的,可当文件管理整合在自己编写的网站系统里,样式无加载,需要自行设计样式。
仅供参考。
代码如下:
<?php /** * by hkshadow * 2011-10-03 **/ $s = isset($_GET['s']) ? $_GET['s'] : "";//测定变量是否设定 $p = isset($_GET['p']) ? $_GET['p'] : ""; $f = isset($_GET['f']) ? $_GET['f'] : ""; $fpath = isset($_GET['path']) ? $_GET['path'] : ""; $path=str_replace('\\','/',dirname(__FILE__)).'/'; if($fpath!=""){!$path && $path = '.';$paths=str_replace('//','/',$_GET['path']);$path1=str_replace('//','/',opath($path,$paths));ofile($path1);} switch($s){//函数调用 case "main": ofile($path);break; case "redir": redir($p);break; case "refile": refile($p);break; case "upload": upload($p);break; case "edit": edit($p,$f);break; case "del": del($p,$f,$_GET['i']);break; case "perms": perms($p,$f);break; case "ref": ref($p,$f);break; case "cfile": cfile($p,$f);break; case "deldir": deldir($p,$f);break; default: break; } //文件目录列表 function ofile($path){ $pathw=is_writable($path) ? "可写" : "不可写"; echo '<form method="GET">'; echo ' [<a href="?s=redir&p='.urlencode($path).'">创建目录</a> | '; echo ' <a href="?s=refile&p='.urlencode($path).'">创建文件</a> | '; echo ' <a href="?s=upload&p='.urlencode($path).'">上传文件</a></a>]'; echo '</a><br>当前路径('."$pathw".'): <input type="text" name="path" value="'."$path".'" size="68"> '; echo '<input type="submit" value="Enter"></form>'; echo '<table bgcolor="#000000" cellpadding=1 cellspacing=1 width="850"><tr align="center">'; echo '<td width="430" bgcolor="#6959CD">名称</td>'; echo '<td width="50" bgcolor="#6959CD">下载</td>'; echo '<td width="120" bgcolor="#6959CD">大小</td>'; echo '<td width="250" bgcolor="#6959CD">操作</td>'; echo '</tr>'; [email protected]($path); while (false !== ([email protected]($spider))){ $filebug = strlen($file)>50 ? substr($file,0,50) : $file; $filedir="$path"."$file"; [email protected]_dir($filedir); if($dir=="1"){ if($file!="."){ if($file==".."){ echo '<tr><td width="430" bgcolor="#AAAAAA">'; echo '<a href="?path='.urlencode(uppath($filedir)).'"><b>[返回上级目录]</b></a></td>'; echo '<td width="50" bgcolor="#AAAAAA"><div align="center">===</div></td>'; echo '<td width="120" bgcolor="#AAAAAA"><div align="center">===</div></td>'; echo '<td width="250" bgcolor="#AAAAAA"><div align="center">===</div></td></tr>'."\n"; } else{ $dirw=is_writable($filedir) ? "可写" : "不可写"; echo '<tr><td width="430" bgcolor="#AAAAAA">'; echo '<font face="wingdings" size="3">1</font><a href="?path='.urlencode($filedir).'">'."$filebug".'</a>'; echo '<td width="50" bgcolor="#AAAAAA"><div align="center">'."$dirw".'</div></td>'; echo '<td width="120" bgcolor="#AAAAAA"><div align="center">dir</div></td>'; echo '<td width="250" bgcolor="#AAAAAA"><div align="center">'; echo '[<a href="#" onclick="if(confirm(\'确认要删除目录'."$file".'吗?\')==true) document.location.href=\'?s=deldir&p='.urlencode($path).'&f='.urlencode($file).'\';">删除</a>] '; echo '[<a href="?s=perms&p='.urlencode($path).'&f='.urlencode($file).'">属性</a>] '; echo '[<a href="?s=ref&p='.urlencode($path).'&f='.urlencode($file).'">改名</a>]</div></td></tr>'."\n"; } } } } @closedir($spider); [email protected]($path); while (false !== ([email protected]($spider))){ $filebug = strlen($file)>50 ? substr($file,0,50) : $file; $filedir="$path"."$file"; [email protected]_dir($filedir); $pathg=str_replace('\\', '/', dirname(__FILE__)).'/'; $fileurl = str_replace($pathg,'',$path); if($dir=="0"){ if($file!='..'){ [email protected]($filedir); $fsize=$fsize/1024; [email protected]_format($fsize, 3); echo '<tr><td width="430" bgcolor="#AAAAAA">'; echo '<font face="wingdings" size="3">4</font> <a target="_blank" href="./'."$fileurl"."$file".'">'."$filebug".'</a></td>'; echo '<td width="50" bgcolor="#AAAAAA"><div align="center"><a href="?fd='.urlencode($filedir).'">下载</a></td>'; echo '<td width="120" bgcolor="#AAAAAA"><div align="center">'."$fsize".' KB</td>'; echo '<td width="250" bgcolor="#AAAAAA"><div align="center">'; echo '[<a href="?s=edit&p='.urlencode($path).'&f='.urlencode($file).'">编辑</a>] '; echo '[<a href="#" onclick="if(confirm(\'确认要删除文件'."$file".'吗?\')==true) document.location.href=\'?s=del&p='.urlencode($path).'&f='.urlencode($file).'\';">删除</a>] '; echo '[<a href="?s=perms&p='.urlencode($path).'&f='.urlencode($file).'">属性</a>] '; echo '[<a href="?s=ref&p='.urlencode($path).'&f='.urlencode($file).'">改名</a>] [<a href="?s=cfile&p='.urlencode($path).'&f='.urlencode($file).'">拷贝</a>]</td></tr>'."\n"; } } } @closedir($spider); echo '</table>'; } //返回 function back(){ echo '<br><a href="javascript:history.go(-1);">[返回]</a><br><br>'; } function fanhui($p){ echo '<br><a href="?path='.urlencode($p).'">[返回]</a><br><br>'; } //处理路径 function opath($scriptpath,$nowpath) { if ($nowpath == '.') { $nowpath = $scriptpath; } $nowpath = str_replace('\\', '/', $nowpath); $nowpath = str_replace('//', '/', $nowpath); if (substr($nowpath, -1) != '/') { $nowpath = $nowpath.'/'; } return $nowpath; } function uppath($nowpath) { $pathdb = explode('/', $nowpath); $num = count($pathdb); if ($num > 2) { unset($pathdb[$num-1],$pathdb[$num-2]); } $uppath = implode('/', $pathdb).'/'; $uppath = str_replace('//', '/', $uppath); return $uppath; } //创建目录 function redir($repath){ echo "<br>创建到当前路径: $repath <br>"; echo '<form method="POST" >目录名称:<input type="text" name="redir"><input type="submit" name="subdir" value="确定"></form>'; fanhui($repath); if($_POST['subdir']){ $redir=$_POST['redir']; $repathok="$repath"."$redir"; if(stristr($redir,'/')){ echo '<br>目录名错误<br><br>'; } elseif(file_exists($repathok)){ echo '<br>目录'."$redir".'已存在<br><br>'; } else{ [email protected]($repathok,0777) ? '<br>目录'."$redir".'创建成功<br><br>' : '<br>目录'."$redir".'创建失败<br><br>'; echo "$msg"; } } } //创建文件 function refile($ref){ echo '<form method="POST" >路径文件名: <input type="text" name="refile" size="65" value="'."$ref".'spider.php"><br>'; echo '<textarea name="text" COLS="75" ROWS="18" >请输入内容</textarea><br>'; echo '<input type="submit" name="subfile" value="保存"></form>'; fanhui($ref); if($_POST['subfile']){ $refile=$_POST['refile']; $text=$_POST['text']; [email protected]($refile,'w'); if($fp==null){ echo '<br>创建文件失败!<br><br>'; } else{ @fwrite($fp,stripslashes($text)); @fclose($fp); echo "<script>window.alert('创建文件"."$refile"."成功');history.go(-1);</script>"; } } } //上传文件 function upload($pathname){ echo '<br>允许最大单个上传文件:'[email protected]_cfg_var('upload_max_filesize'); echo '<br><div align="center"><form method="POST" enctype="multipart/form-data">'; echo '本地文件: <input name="upfile" type="file" size="30"> <input type="submit" name="upok" value="上传"><br>'; echo '上传到路径: <input name="up" type="text" value="'."$pathname".'" size="45"></form>'; fanhui($pathname); if($_POST['upok']){ $uppath=$_POST['up']; echo @copy($_FILES['upfile']['tmp_name'],"".$uppath."/".$_FILES['upfile']['name']."") ? "上传文件{$_FILES['upfile']['name']}成功!<br><br>" : "上传文件{$_FILES['upfile']['name']}失败!<br><br>"; } } //编辑文件 function edit($p,$f){ $ep="$p"."$f"; [email protected]($ep,'r'); [email protected]($hackfp, filesize($ep)); $redspider=htmlspecialchars($redspider); echo '<br>编辑文件:'."$ep"; echo '<br><form method="POST">'; echo '<textarea name="ftext" COLS="75" ROWS="18" >'."$redspider".'</textarea><br>'; echo '<input type="submit" name="editok" value="保存"></form>'; back(); if($_POST['editok']){ [email protected]($ep,'w'); if($fp==null){ echo '保存失败<br><br>'; } else{ $ftext=$_POST['ftext']; fwrite($fp,stripslashes($ftext)); fclose($fp); echo "<script>window.alert('保存文件"."$ep"."成功');history.go(-1);</script>"; } } } //删除文件 function del($dp,$df,$i){ $delfile="$dp"."$df"; if(!file_exists($delfile)) { echo '<br>文件'."$df".'不存在! '; if($i=="1") back(); else fanhui($dp); } else { $msg = @unlink($delfile) ? '<br>文件'."$df".'删除成功!<br>' : '<br>删除失败!<br>'; echo "$msg"; if($i=="1") back(); else fanhui($dp); } } //属性 function perms($pp,$pf){ $pfile="$pp"."$pf"; $pold=substr(base_convert(fileperms($pfile),10,8),-4); [email protected]("Y-n-d H:i:s",filectime("$pfile")); echo '<br>'."$pfile".' 的当前属性为: '."($pold)".' 修改日期: '."$ftime".'<br><form method="POST">'; echo '修改属性: <input type="text" name="pfo" value="'."$pold".'" > '; echo '<input type="submit" name="subperms" value="修改"></form>'; fanhui($pp); if($_POST['subperms']){ $pnew=$_POST['pfo']; $fileperm=base_convert($pnew,8,10); [email protected]($pfile,$fileperm)?"更改成功!":"更改失败!"; echo "<script>window.alert('文件"."$pfile"."属性"."$msg"."');history.go(-1);</script>"; } } //重命名 function ref($rp,$rf){ $rpf="$rp"."$rf"; echo '<br><form method="POST">路径:'."$rp".'<br>将('."$rf".') 重命名为: <input type="text" name="newf" value="'."$rf".'">'; echo '<input type="submit" name="subref" value="修改"></form>'; fanhui($rp); if($_POST['subref']){ $newf=$_POST['newf']; $newfile="$rp"."$newf"; $msg = file_exists($rpf) ? (@rename($rpf,$newfile) ? "重命名为{$newf}成功" : "重命名为{$newf}失败") : "不存在"; echo "<script>window.alert('"."$rf"."$msg"."');history.go(-1);</script>"; } } //拷贝文件 function cfile($cp,$cf){ $cpf="$cp"."$cf"; echo '<br>文件: '."$cpf".'<br><form method="POST">拷贝到: <input type="text" name="newf" size="35" value="'."$cpf".'"> '; echo '<input type="submit" name="subcfile" value="确定"></form>'; fanhui($cp); if($_POST['subcfile']){ $newf=$_POST['newf']; if(file_exists($newf)){ echo '失败:文件'."$newf".'已存在<br><br>'; } else{ $msg = @copy($cpf,$newf) ? '文件 '."$cpf".' 拷贝到 '."$newf".' 成功!<br><br>' : '失败,路径出错或不可写!<br><br>'; echo "$msg"; } } } //删除目录 function deldir($dp,$dd){ $deldir="$dp"."$dd"; if(isset($deldir)) { $msg = file_exists($deldir)?(deltree($deldir)?"删除成功":"删除失败"):"不存在"; echo '<br><br>目录'."$dd"."$msg"; fanhui($dp); } } function deltree($dpath){ [email protected]($dpath); while([email protected]($mydir)){ if((is_dir("$dpath/$file")) && ($file!=".") && ($file!="..")) { if(!deltree("$dpath/$file")) return false; }else if(!is_dir("$dpath/$file")){ @chmod("$dpath/$file", 0777); if([email protected]("$dpath/$file")) return false; } } @closedir($mydir); @chmod("$dpath", 0777); if([email protected]($dpath)) return false; return true; } //页面执行时间 function pagetime(){ global $stime; $paget = explode(' ', microtime()); $ptime = number_format(($paget[1] + $paget[0] - $stime), 6); return $ptime; } function array_stripslashes(&$array) { while(list($key,$var) = each($array)) { if ((strtoupper($key) != $key || ''.intval($key) == "$key") && $key != 'argc' && $key != 'argv') { if (is_string($var)) $array[$key] = stripslashes($var); if (is_array($var)) $array[$key] = array_stripslashes($var); } } return $array; } ?>