dir

2 08 2009

Este es mi dir.php v1.5, muestra las carpetas y archivos de un carpeta, ademas de borrar archivos. Para llamarlo se le debe dar un directorio (path) que puede ser ./ (si se quiere ver el mismo directorio donde esta el archivo).
Si quisieran cargarlo dentro de una división, usen indivmode=true
Se recomienda colocar en el directorio raíz de tu hosting.

<?php
/*	dir v1.5 by FCR
*	obtener carpetas y archivos de un directorio
*	mostrar todas las carpetas primero y todos los archivos despues
*	poder eliminar archivos
*/
echo "<br>".$PHP_SELF." v1.5";
echo "<br>View[path]";
echo "<br>Delete[unlink]";

if($_GET["unlink"] && $_GET["mad"]=="true"){
	$tunlink = $_GET["unlink"];
	if(unlink($tunlink)){
	echo '%' . $tunlink . ' Eliminado';
	} 
}

if($_GET["path"]){
	$explodedir = $_GET["path"];
	$explodedir = str_replace('./','',$explodedir);
}else{
	$explodedir = '.';
}

	// $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);

$x=0;$y=0;
$Xget = "";
$csfiles = "";$csfolders = "";
$foFirst = true;$fiFirst = true;

//en caso de ejcutarse de forma externa para cargarse en una division:
		if($_GET["indivmode"]){
			foreach ($aImgContents as $fname) {//solo archivos
			$fname= str_replace('//','/',$fname);
			$Xget = $Xget . "<br><a href='". $strRoot . $fname . "' target='exploderwindow'>" . $fname . "</a>";
           		$x=$x+1;
			echo $Xget;
			exit;		
			}
				}
		else
		{//si es a pagina completa
			$CC = "";
			foreach ($bImgContents as $fname) {//carpetas
			$fname= str_replace('//','/',$fname);
			$Xget = $Xget . "<br>".$folderimg."<a href='". $PHP_SELF . "?path=" . $fname . "' target='_self'>" . $fname . "</a>"; 
						$x=$x+1;
						if (!$foFirst) $CC = ",";
						$csfolders = $csfolders . $CC . "'". $fname . "'";
						$foFirst = false; $CC = "";
			}
			$CC = "";
			foreach ($aImgContents as $fname) {//archivos
			$fname= str_replace('//','/',$fname);
			$Xget = $Xget . "<br>".$fileimg."<a href='". $strRoot . $fname . "' target='exploderwindow'>" . $fname . "</a><a href='" . $PHP_SELF . "?path=" . $explodedir . "&mad=true&unlink=" . $fname . "' target='_self'>[X]</a>"; 
						$x=$x+1;
						if (!$fiFirst) $CC = ",";
						$csfiles = $csfiles . $CC . "'". $fname . "'";
						$fiFirst = false; $CC = "";
			}
?>
<html>
<head>
<title>DIR <? echo $_GET&#91;"path"&#93;; ?></title> 	
<script type="text/javaScript">
onerror=handleErr;
myerr="";
errtxt="";

function handleErr(msg,url,l)
{
myerr="<br>There was an error on this page.";
myerr+="<br>Error: " + msg + "";
myerr+="<br>URL: " + url + "";
myerr+="<br>Line: " + l + "";
errtxt=errtxt+myerr+"";
//alert(myerr);
return true;
}
</script>

</head>
<body bgcolor=#EEEEEE text=#000000>
<div style="width: 500px; height:450px; float:left; padding: 5px;">
<?php
echo "<br><table cellpading=0 cellspacing=0><tr><td>explorando: </td><td><form action='".$PHP_SELF."' method='GET'><input type='text' name='path' value='" . $explodedir . "' size=7><input type='submit' value='/'></form></tr>";
echo "<br><tr><td>" . $x . " Archivos encontrados</td></tr></table>";
echo "<br><div style='width: 450px; height:300px; background-color:#CCCCCC; overflow: scroll; scrollbar-face-color:#666;scrollbar-shadow-color:#FFFFFF;'>" . $Xget . "</div>";
?>	
</div>
</body>
</html>

<?php
}
?>

Por cierto:

Una parte de este código fue extraída de “picnick in a box”, es una parte que he usado muchas veces (como cuando quise pasar mis archivo .php3 a .php y corregir todos los .php3 por .php en cada uno de esos archivos)
Durante mucho me olvide de mencionarlo, pero un increíble flashback me permite darle credito.

Imagenes
folder
file

Anuncios

Acciones

Information

One response

10 03 2010
dir « Incendia la ciudad

[…] 10 03 2010 Basándome en dir v1.5, presento la nueva versión, que contiene algunas mejoras(verificar que existe el directorio a […]

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: