Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/03/2011, 12:08
Avatar de alette666
alette666
 
Fecha de Ingreso: febrero-2010
Ubicación: En la luna
Mensajes: 277
Antigüedad: 14 años, 3 meses
Puntos: 5
De acuerdo sistema de listado en php

Bueno gente amigas del foro, hoy no vengo a pedir ayuda, sino a brindar mi ayuda.

Bien con unos amigos y algunos profesores hemos creado un muy bonito sistema de listado de archivos o "contenidos" que se encuentran en una carpeta o sitio web.
La misma cuenta con unas series de comandos muy definidas, nos tomó algo de tiempo, desde que empezamos las clases (no mucho)

Bueno al grano

listado.php
Código PHP:
<?php
$host
=$_SERVER['HTTP_HOST'];
/*Directorio de secuencias de comandos de listado - Versión 2*/
/*============================================================*/
$startdir '.';
$showthumbnails false
$showdirs true;
$forcedownloads false;
$hide = array(
    
'dlf',
    
'public_html',                
    
'index.php',
    
'Thumbs',
    
'.htaccess',
    
'.htpasswd'
);

$displayindex false;
$allowuploads false;
$overwrite false;

$indexfiles = array (
    
'index.html',
    
'index.htm',
    
'default.htm',
    
'default.html'
);

/*Tipos de archivos que se mostraran en nuestra lista*/
$filetypes = array (
    
'png' => 'jpg.gif',
    
'jpeg' => 'jpg.gif',
    
'bmp' => 'jpg.gif',
    
'jpg' => 'jpg.gif'
    
'gif' => 'gif.gif',
    
'zip' => 'archive.png',
    
'rar' => 'archive.png',
    
'exe' => 'exe.gif',
    
'setup' => 'setup.gif',
    
'txt' => 'text.png',
    
'htm' => 'html.gif',
    
'html' => 'html.gif',
    
'php' => 'php.gif',                
    
'fla' => 'fla.gif',
    
'swf' => 'swf.gif',
    
'xls' => 'xls.gif',
    
'doc' => 'doc.gif',
    
'sig' => 'sig.gif',
    
'fh10' => 'fh10.gif',
    
'pdf' => 'pdf.gif',
    
'psd' => 'psd.gif',
    
'rm' => 'real.gif',
    
'mpg' => 'video.gif',
    
'mpeg' => 'video.gif',
    
'mov' => 'video2.gif',
    
'avi' => 'video.gif',
    
'eps' => 'eps.gif',
    
'gz' => 'archive.png',
    
'asc' => 'sig.gif',
);            

error_reporting(0);

if(!
function_exists('imagecreatetruecolor')) $showthumbnails false;
    
$leadon $startdir;
if(
$leadon=='.'$leadon '';
if((
substr($leadon, -11)!='/') && $leadon!=''$leadon $leadon '/';
    
$startdir $leadon;
if(
$_GET['dir']) {
//Comprobamos si está todo correcto.
if(substr($_GET['dir'], -11)!='/') {
    
$_GET['dir'] = $_GET['dir'] . '/';
}
$dirok true;
$dirnames split('/'$_GET['dir']);
for(
$di=0$di<sizeof($dirnames); $di++) {
if(
$di<(sizeof($dirnames)-2)) {
    
$dotdotdir $dotdotdir $dirnames[$di] . '/';
}
if(
$dirnames[$di] == '..') {
    
$dirok false;
}
}
if(
substr($_GET['dir'], 01)=='/') {
    
$dirok false;
}
if(
$dirok) {
    
$leadon $leadon $_GET['dir'];
}
}
$opendir $leadon;
if(!
$leadon$opendir '.';
if(!
file_exists($opendir)) {
    
$opendir '.';
    
$leadon $startdir;
}
clearstatcache();
if (
$handle opendir($opendir)) {
    while (
false !== ($file readdir($handle))) { 
//Primero vemos si este archivo es necesario en la lista
if ($file == "." || $file == "..")  continue;
    
$discard false;
for(
$hi=0;$hi<sizeof($hide);$hi++) {
if(
strpos($file$hide[$hi])!==false) {
    
$discard true;
}
}
if(
$discard) continue;
if (@
filetype($leadon.$file) == "dir") {
if(!
$showdirs) continue;
    
$n++;
if(
$_GET['sort']=="date") {
    
$key = @filemtime($leadon.$file) . ".$n";
}
else {
    
$key $n;
}
$dirs[$key] = $file "/";
}
else {
    
$n++;
if(
$_GET['sort']=="date") {
    
$key = @filemtime($leadon.$file) . ".$n";
}
elseif(
    
$_GET['sort']=="size") {
    
$key = @filesize($leadon.$file) . ".$n";
}
else {
    
$key $n;
}
    
$files[$key] = $file;
if(
$displayindex) {
if(
in_array(strtolower($file), $indexfiles)) {
    
header("Location: $file");
die();
}
}
}
}
closedir($handle); 
}
//Ordenamos nuestros archivos
if($_GET['sort']=="date") {
    @
ksort($dirsSORT_NUMERIC);
    @
ksort($filesSORT_NUMERIC);
}
elseif(
$_GET['sort']=="size") {
    @
natcasesort($dirs); 
    @
ksort($filesSORT_NUMERIC);
}
else {
    @
natcasesort($dirs); 
    @
natcasesort($files);
}
//Ordenamos correctamente
if($_GET['order']=="desc" && $_GET['sort']!="size") {$dirs = @array_reverse($dirs);}
if(
$_GET['order']=="desc") {$files = @array_reverse($files);}
    
$dirs = @array_values($dirs); $files = @array_values($files);
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Welcome to <? print $host?></title>
<link rel="stylesheet" type="text/css" href="styles.css" />
</head>
<body>
<div id="container">
<h1>Mostrando el listado de contenidos de una sitio web!</h1>
<div id="breadcrumbs">
<p>Tipo de red:&nbsp;&nbsp;<strong><? print $host?></strong></p><!--Tipo de red que se visualiza-->
<p><span class="style3">A continuación puedes ver los archivos actuales en la carpeta public_html.</span></p>      
</div>
  <div id="listingcontainer">
    <div id="listingheader"> 
    <div id="headerfile">Archivo</div>
    <div id="headersize">Tama&ntilde;o</div>
    <div id="headermodified">Modificado el</div>
    </div>
    <div id="listing">
<?php
    $class 
'b';
if(
$dirok) {
?>
<div>
<a href="<?=$dotdotdir;?>" class="<?=$class;?>"><img src="dirup.png" alt="Carpeta" /><strong>..</strong> <em>-</em> <?=date ("M d Y h:i:s A"filemtime($dotdotdir));?></a></div>

<?php
if($class=='b'$class='w';
else 
$class 'b';
}
    
$arsize sizeof($dirs);
for(
$i=0;$i<$arsize;$i++) {
?>

<div><a href="<?=$leadon.$dirs[$i];?>" class="<?=$class;?>"><img src="folder.png" alt="<?=$dirs[$i];?>" /><strong><?=$dirs[$i];?></strong> <em>-</em> <?=date ("M d Y h:i:s A"filemtime($leadon.$dirs[$i]));?></a></div>
<?php
if($class=='b'$class='w';
else 
$class 'b';    
}
$arsize sizeof($files);
for(
$i=0;$i<$arsize;$i++) {
    
$icon 'unknown.png';
    
$ext strtolower(substr($files[$i], strrpos($files[$i], '.')+1));
    
$supportedimages = array('gif''png''jpeg''jpg');
    
$thumb '';
if(
$filetypes[$ext]) {
    
$icon $filetypes[$ext];
}
$filename $files[$i];

if(
strlen($filename)>43) {
    
$filename substr($files[$i], 040) . '...';
}
$fileurl $leadon $files[$i];
?>

<div>
<a href="<?=$fileurl;?>" class="<?=$class;?>"<?=$thumb2;?>><img src="<?=$icon;?>" alt="<?=$files[$i];?>" /><strong><?=$filename;?></strong> <em><?=round(filesize($leadon.$files[$i])/1024);?>KB</em> <?=date ("M d Y h:i:s A"filemtime($leadon.$files[$i]));?><?=$thumb;?></a></div>

<?php
if($class=='b'$class='w';
else 
$class 'b';    
}    
?>
</div>
</div>
</div>
<div id="copy">sistema de listado en php by <a href="http://www.forosdelweb.com/miembros/alette666/" target="_blanck">alejandro (alette666)</a></div>
</body>
</html>

y como resultado verian esto http://gauchoargentino.orgfree.com/php/listado.php, jejeje espero que les guste esta ayuda, si quieren tenerlo para descargar solo envienmen un MP

EDITO: bueno no se ve bien el resultado pero lo pude ver desde mi pc "en red local "localhost"

Última edición por alette666; 13/03/2011 a las 12:34