dir

10 03 2010

Basándome en dir v1.5, presento la nueva versión, que contiene algunas mejoras(verificar que existe el directorio a listar y que ).

<?php
/*	dir v1.6 by FCR
*	obtener carpetas y archivos de un directorio
*	mostrar todas las carpetas primero y todos los archivos despues
*	poder eliminar archivos
*/
if($_GET["path"]){
	$explodedir = $_GET["path"];
	$explodedir = str_replace('./','',$explodedir);
	if(!is_dir($explodedir)){ $explodedir = '.'; }
}else{
	$explodedir = '.';
}

if($_GET["unlink"] && $_GET["mad"]=="true" ){
	$tunlink = $_GET["unlink"];
	if(file_exists($_GET["unlink"])){
		if(unlink($tunlink)){ $tunlink_status = "Borrado."; } else { $tunlink_status = "No se puede Borrar."; } 
	}
	else{ $tunlink_status = "No existe."; }
}

if(isset($_GET['mad']) && $_GET['mad']<>""){$madtrue = '&mad=true';}else{$madtrue = '';}

	// $strRoot will be the URL to this page's parent directory
	$strPath = str_replace( "\\", "/", $_SERVER['REQUEST_URI'] );
	$aPath = explode( "?", $strPath);
	$strRoot = "http://" . $_SERVER['SERVER_NAME'] . ":" . $_SERVER['SERVER_PORT'] . $aPath[0];
	$aSelfBits = explode( "/", $_SERVER['PHP_SELF'] );
	$strFile = $aSelfBits[count($aSelfBits)-1];
	$strRoot = str_replace( $strFile, "", $strRoot );	// remove the name of the page
	if ($strRoot[strlen($strRoot)-1] != "/")
		$strRoot .= "/";

	// We need to find the list of files for display.  We'll do a little PHP magic
	$dir_handle = opendir( $explodedir );
        $aImgContents = Array();$fileimg = "<img src='file.png' alt='file'>";
	$bImgContents = Array();$folderimg = "<img src='folder.png' alt='folder'>";
        while ( false !== ( $entry = readdir( $dir_handle ) ) )
        { 
            if( $entry == "." ||
                $entry == ".." ) {
                continue;
            }
            if( is_dir( $explodedir. "/" . $entry ) ) {
		$bImgContents[] = $explodedir.'/'.$entry; 
                continue;
            }
            $aImgContents[] = $explodedir.'/'.$entry;;
        }
	closedir( $dir_handle );//ya no lo necesitamos abierto
	

$explodedir = str_replace('.//','',$explodedir);//maldita sea strpos con una sola 'r' por darme problemas
$explodedir = str_replace('./','',$explodedir);
?>
<html>
<head>
<title>DIR <? echo $_GET["path"]; ?></title> 	
</head>
<body>
<?php
echo "<br>".$PHP_SELF." v1.5";
echo "<br>View[path]";
echo "<br>Delete[unlink]";
if(isset($tunlink_status)){ echo '<br>%' . $tunlink . $tunlink_status; }
?>
<div style="float:left;">
<br>
		 <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="GET">
			explorando:<input type="text" name="path" value="<?php echo $explodedir; ?>" size=7>
			<?php if(isset($_GET['mad']) && $_GET['mad']<>""){
			echo '<input type="hidden" name="mad" value="' . $_GET['mad'] .'">';
			} ?>
			<input type="submit" value="/">
		</form>

	<div style="min-width: 500px;width:auto; height:310px; overflow: scroll;">
	<?php
	$x=0;$y=0;
	$Xget = "";
	$csfiles = "";$csfolders = "";
	$foFirst = true;$fiFirst = true;
			$CC = "";
			foreach ($bImgContents as $fname) {//carpetas
				$fname= str_replace('//','/',$fname);
				$Xget = '<br>'.$folderimg.'<a href="'. $PHP_SELF . '?path=' . $fname . $madtrue . '" target="_self">' . $fname . '</a>'; 
						$x=$x+1;
						if (!$foFirst) $CC = ",";
						$csfolders = $csfolders . $CC . "'". $fname . "'";
						$foFirst = false; $CC = "";
				echo $Xget;
			}
			$CC = "";
			foreach ($aImgContents as $fname) {//archivos
				$fname= str_replace('//','/',$fname);
				$Xget = '<br>'.$fileimg.'<a href="'. $strRoot . $fname . '" target="exploderwindow">' . $fname . '</a><a href="' . $PHP_SELF . '?path=' . $explodedir .$madtrue .'&unlink=' . $fname . '" target="_self">[X]</a>'; 
						$x=$x+1;
						if (!$fiFirst) $CC = ",";
						$csfiles = $csfiles . $CC . "'". $fname . "'";
						$fiFirst = false; $CC = "";
				echo $Xget;
			}
			echo $x . "Archivos encontrados.";
		?>
	</div>
	
</div>
</body>
</html>

Notas:

  • la parte de ?indivmode=true ya no funciona, por que seria mejor crear una copia aparte para estos fines.
  • Para borrar un archivo agregar &mad=true a la url(luego puedes hacer alegres clicks en cada [X])

Imagenes
folder
file

Anuncios

Acciones

Information

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s




A %d blogueros les gusta esto: