<?php
/** php Explorer is a directory browser. it is easy to use and have basic commands.
* <br> It make use of css, so you can edit the styles to change the look.
* <br>Tested on Firefox 2 and Opera 9.
* <br>Last update: December 24, 2008.
* <br>Author: Marcelo Entraigas <m_entraigas at yahoo dot com>.
* <br>Licence: BSD License.
*/
session_start();
include('class.file_utils.php');
//where is my path?
if($_REQUEST['cmd']=='cd')
$fs = new file_utils($_REQUEST['val']);
elseif(isset($_SESSION['path']))
$fs = new file_utils($_SESSION['path']);
else
$fs = new file_utils();
//any other actions?
switch ($_REQUEST['cmd']) {
case 'get':
$fs->download($_REQUEST['val']);
break;
case 'upload':
$fs->upload(_path);;
break;
case 'mkdir':
$fs->mkdir($_REQUEST['val']);
break;
case 'chmod':
foreach ($_REQUEST['files'] as $file) echo $fs->chmod(_path._slash.$file,$_REQUEST['val']);
break;
case 'rm':
foreach ($_REQUEST['files'] as $file) $fs->rm(_path.$file);
break;
default:
}
$fs->ls();
if (empty($fs->folders)){
$fs->folders['..'] = array('filepath'=>substr($_SESSION['path'],0,-1), 'description'=>htmlentities($_SESSION['path']));
}else{
$_SESSION['path'] = _path;
}
/*
//use post (javascript must be activated)
<a href="#" onclick="send('cd','<?php echo $attr['filepath']._slash;?>');">
<a href="#" title="Download!" onclick="send('get','<?php echo $attr['filepath'];?>');">
//or get?
<a href="?cmd=cd&val=<?php echo $attr['filepath']._slash;?>">
<a href="?cmd=get&val=<?php echo $attr['filepath'];?>" title="Download!">
*/
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>php Explorer v2</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
a:visited {color: #000000}
a:link {color: #000000}
a:hover {color: #0300FF}
body{
font-family: Arial, Helvetica, sans-serif;
font-size: 14px;
}
/* main table borders */
.bottom_table{
font-family: Arial, Helvetica, sans-serif;
border-left-style:solid;
border-left-color:#FF8A00;
border-left-width:3px;
border-bottom-style:solid;
border-bottom-color:#FF8A00;
border-bottom-width:3px;
}
.top_table{
font-family: Arial, Helvetica, sans-serif;
border-right-style:solid;
border-right-color:#FF8A00;
border-right-width:3px;
border-top-style:solid;
border-top-color:#FF8A00;
border-top-width:3px;
}
/* main table title */
.title{
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: bold;
margin: 5px;
}
/* file table header (file, size, perms) */
.header{
background-color: #FF8A00;
color: white;
}
.row1{
background-color: #FFFFFF;
}
.row0{
background-color: #FFFFCC;
border-top-width: 1px;
border-top-style: solid;
border-top-color: #FFFF99;
border-bottom-width: 1px;
border-bottom-style: solid;
border-bottom-color: #FFFF99;
}
.button{
font-family: Arial, Helvetica, sans-serif;
background-color: #FFFFCC;
border:solid;
border-width: 1px;
border-color:#660033;
margin: 5px;
}
</style>
<script type="text/javascript">
function validate(){
check = document.go.files;
if(check.length){
for(c=0; c<check.length; c++) {
if(check[c].checked)
return true;
}
} else {
if(check.checked)
return true;
}
alert('No files selected!');
return false;
}
function check_all(value){
check = document.go.files;
if(check.length){
for(c=0; c<check.length; c++)
check[c].checked = value;
} else check.checked = value;
}
function mkdir(){
var pattern = new RegExp(/^[^\s]\w+/);
dir = prompt('Directory name:');
if(dir.length>0 && pattern.test(dir)){
send('mkdir','<?php echo _path;?>' + dir);
}
}
function chmod(){
perm = prompt('Change permissions to:');
if(perm.length>0 && validate()){
send('chmod',perm);
}
}
function rm(){
if(validate() && confirm('Delete marked files?')){
send('rm','');
}
}
function send(cmd,val){
document.forms.go.cmd.value = cmd;
document.forms.go.val.value = val;
document.forms.go.submit();
}
</script>
</head>
<body>
<table width="100%" border="0" cellpadding="0" cellspacing="0" class="top_table">
<tr><td colspan="2" class="bottom_table"><div class="title"><?php echo _path;?></div></td></tr>
<tr valign="top">
<td width="150" class="bottom_table" style="background-color: #FFFFCC;">
<?php foreach ($fs->folders as $folder => $attr):?>
<a href="?cmd=cd&val=<?php echo $attr['filepath']._slash;?>"><?php echo $folder;?></a><br>
<?php endforeach;?>
</td>
<td width="90%" class="bottom_table">
<form name="go" method="POST" action="<?php echo basename(__FILE__);?>">
<input type="hidden" name="cmd" value="" >
<input type="hidden" name="val" value="" >
<?php if(count($fs->files)):?>
<table border="0" width="100%" cellspacing="0" cellspacing="0">
<tr class="header">
<th>File</th><th>Size</th><th width="50">Perms</th><th width="130">Modified</th>
</tr>
<?php foreach ($fs->files as $filename => $attr): $total+=$attr['size'];
$flag=!$flag;
$class=sprintf("row%b",$flag);?>
<tr align="left">
<td class="<?php echo $class;?>"><input type="checkbox" id="files" name="files[]" value="<?php echo $filename;?>"><a href="#" title="Download!" onclick="send('get','<?php echo $attr['filepath'];?>');"><?php echo $filename;?></a></td>
<td class="<?php echo $class;?>" align="center"><?php echo $fs->get_size($attr['size']);?></td>
<td class="<?php echo $class;?>"><?php echo $attr['perms'];?></td>
<td class="<?php echo $class;?>" align="center"><?php echo $attr['time'];?></td>
</tr>
<?php endforeach;?>
<tr align="left" class="header"><th>Select all <input type="checkbox" onchange="if(this.checked)check_all(true); else check_all(false);"></th><th colspan="4" align="right"><?php echo count($fs->files)?> files - <?php echo $fs->get_size($total);?></th></tr>
</table>
<div align="center" style="width:70%; margin-top:15px;">
<input type="button" value="chmod" onclick="chmod();" class="button">
<input type="button" value="Delete" onclick="rm();" class="button">
<input type="button" value="mkdir" onclick="mkdir();" class="button">
</div>
<?php else:?>
<div class="header" style="padding-left:15px;"><b>No Files on this directory!</b></div>
<?php endif;?>
</form>
</td>
</tr>
</table>
</body>
</html>
|