Foros del Web » Programando para Internet » PHP »

tengo el siguiente codigo que lista archivos de un directorio

Estas en el tema de tengo el siguiente codigo que lista archivos de un directorio en el foro de PHP en Foros del Web. el codigo es el siguiente: Código PHP: <?php if ( $gestor  =  opendir ( '../pru1' )) {     echo  "Lista de Archivos para bajar" ; echo  "<ul>" ;        while ( false  !== ( $archivo  ...
  #1 (permalink)  
Antiguo 05/10/2006, 07:33
 
Fecha de Ingreso: agosto-2006
Mensajes: 388
Antigüedad: 17 años, 8 meses
Puntos: 0
tengo el siguiente codigo que lista archivos de un directorio

el codigo es el siguiente:

Código PHP:
<?php
if ($gestor opendir('../pru1')) {
    echo 
"Lista de Archivos para bajar";
echo 
"<ul>";
       while (
false !== ($archivo readdir($gestor))) {
           echo 
"<li><a href=\"" $archivo "\">$archivo</a></li>";
       }
echo 
"</ul>";
   
closedir($gestor);
}
?>
Se me presentan dos problemas:

1.- este archivo se encuentra en un directorio en el mismo nivel que pru1 (directorio que abro para abrir archivos). Lo que yo quiero es que se muestren y se puedan bajar pero al hacer clic en el hipervinculo me busca dicho archivo en la carpeta donde se encuentra el script y no en pru1.

2.- No quiero que se listen los directorio (.) y (..) al desplegar la lista.

gracias, por la ayuda que me puedan brindar.
  #2 (permalink)  
Antiguo 05/10/2006, 09:38
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
1) Añade a tu LINK la ruta "fija" donde cuelga tu archivo (por que con las funciones que usas sólo obtiene el "nombre del archivo"). La ruta tu ya la conces:

Código PHP:
echo "<li><a href=\"../pru1/" $archivo "\">$archivo</a></li>"
2) .. Pues aplica un if() a $archivo .. si tienes "." o ".." .. no le haces el "link"

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 05/10/2006, 11:07
 
Fecha de Ingreso: agosto-2006
Mensajes: 388
Antigüedad: 17 años, 8 meses
Puntos: 0
lo realizo a la altura del mismo gestor no??

el dcontrol del if

Código PHP:
if ($gestor opendir('../pru1')) { 
  #4 (permalink)  
Antiguo 05/10/2006, 11:40
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por jprolando Ver Mensaje
el dcontrol del if

Código PHP:
if ($gestor opendir('../pru1')) { 
No .. en el bucle while() que usas que es donde se obtiene el nombre del archivo siendo uno de esos nombres el "." y los ".."

Código PHP:
while (false !== ($archivo readdir($gestor))) { 
           if (
$archivo != "." || $archivo != ".."){
               echo 
"<li><a href=\"../pru1/" $archivo "\">$archivo</a></li>"
           }
       } 
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 05/10/2006, 11:51
 
Fecha de Ingreso: agosto-2006
Mensajes: 388
Antigüedad: 17 años, 8 meses
Puntos: 0
tu sabes que lo probe y no me da bola

creo que en unos de los intentos lo habia hecho, pero tu sabes que no me da pelota:

Código PHP:
<?php
if ($gestor opendir('../pru1')) {
    echo 
"Lista de Archivos para bajar";
    echo 
"<ul>";
    while (
false !== ($archivo readdir($gestor))) { 
           if (
$archivo != "." || $archivo != ".."){
               echo 
"<li><a href=\"../pru1/" $archivo "\">$archivo</a></li>"
           }
    }
    echo 
"</ul>";
    
closedir($gestor);
}
?>
y bueno seguire buscando, gracias
  #6 (permalink)  
Antiguo 05/10/2006, 15:43
 
Fecha de Ingreso: agosto-2006
Mensajes: 388
Antigüedad: 17 años, 8 meses
Puntos: 0
sigo sin poder solucionar este tema

No me esta controlando la condicion if (me sigue mostrando los directorios . y ..); alguien me pude tirar algunas lineas, gracias
  #7 (permalink)  
Antiguo 05/10/2006, 15:54
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Otra opción:

Código PHP:
if ($archivo == "." || $archivo == "..") continue;
echo 
"<li><a href=\"../pru1/" $archivo "\">$archivo</a></li>"
(el IF que puse que yo sepa estaría bien? .. me habré equivocado?)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 05/10/2006, 15:58
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
que raro a mi si me funciona
$dir=opendir($fotos_temp);
if($dir)
{
while(false!==($file=readdir($dir)))
{
if(($file!='.')&&($file!='..'))
{
$buscar_tmp=$sufijo_down.$usuario;
echo "buscando :".$buscar_tmp."<br>";

$encontro=strstr($file,$buscar_tmp);
if($encontro==false)
{
$buscar_tmp2=$sufijo_temp.$usuario;
$encontro=strstr($file,$buscar_tmp);
echo "este no lo borre: ".$file."<br><br>";
}
else
{
echo "borrando este archivo: ".$file."<br><br>";
}

/*if(!unlink(realpath($fotos_temp.$file)))
{
echo "error<br>";
}*/
}
}
}
else
{
echo "Error al abrir el directorio: ".$fotos_temp;
}
__________________
gerardo
  #9 (permalink)  
Antiguo 05/10/2006, 17:42
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Parece que ahí está mi error:

if(($file!='.')&&($file!='..'))

vs

if ($archivo != "." || $archivo != ".."){

|| sería "O" .. y && "Y" luego se niega con != ...

Me lié con los operadores lógicos O_o'

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #10 (permalink)  
Antiguo 06/10/2006, 06:35
 
Fecha de Ingreso: agosto-2006
Mensajes: 388
Antigüedad: 17 años, 8 meses
Puntos: 0
buenisimo era eso che

Si tienen los dos la razon era "y" en vez de "o",gracias va el codigo completo:

Código PHP:
<?php
if ($gestor opendir('../pru1')) {
    echo 
"Lista de Archivos para bajar";
    echo 
"<ul>";
    while (
false !== ($archivo readdir($gestor))) { 
           if (
$archivo != "." && $archivo != ".."){
               echo 
"<li><a href=\"../pru1/" $archivo "\">$archivo</a></li>"
           }
    }
    echo 
"</ul>";
    
closedir($gestor);
}
?>
Bueno muchas gracias por todo, hasta el proximo no??? (jajajaja)
  #11 (permalink)  
Antiguo 06/10/2006, 07:21
Avatar de .php  
Fecha de Ingreso: julio-2006
Mensajes: 481
Antigüedad: 17 años, 9 meses
Puntos: 5
yo hice algo muy parecido.
que me liste el contenido de un directorio que no este dentra de la carpeta del servidor, es decir, los archivos no estaban a la vista para ser descargados.
Primero cree una pagina que valida un usuario y crea un inicio de sesion
codigo del index.php
Código HTML:
<?php
    session_start(); // retoma una session que exista y si no la crea...
	session_unset(); // Elimina las cookies y valores de variables que puedan existir
	session_destroy(); // destruye la session que pueda existir
?>
<html>
<body>
<form action="valida.php" method="post" name="form1">
            <table width="18%"  border="0">
              <tr>
                <td width="14%" align="right">Usuario</td>
                <td width="2%">&nbsp;</td>
                <td width="84%"><input name="user" type="text" size="15"></td>
              </tr>
              <tr>
                <td height="19" align="right">Contrase&ntilde;a</td>
                <td height="19">&nbsp;</td>
                <td><input name="password" type="password" size="15"></td>
              </tr>
              <tr>
                <td height="19" align="right">&nbsp;</td>
                <td height="19">&nbsp;</td>
                <td><input name="BtnAceptar" type="submit" value="Ingresar"></td>
              </tr>
              <tr>
                <td height="19" align="right">&nbsp;</td>
                <td height="19">&nbsp;</td>
                <td>&nbsp;</td>
              </tr>
            </table>
</form>
</body>
</html>
<?php 
echo "<script language='JavaScript' type='text/JavaScript'>";
echo "document.form1.user.focus()";
echo "</script>";
?> 
en la pagina valida.php tengo usuarios y claves que son fijas, pero ustedes la pueden conectar a una BD y validar al usuario , es facil ;D

valida.php
Código PHP:
<?
session_start
();
$user    =    $_POST["user"];
$pass    =    $_POST["pass"];
if(
$user==".php" and $pass=="123456" or $user=="x2" and $pass=="123"){
    
$_SESSION["user"] = $user;
    
$_SESSION["path"] = "/home/Descargas/";
    echo 
"<script language='javascript'>window.top.location='./listar.php'</script>";
}elseif(
$user=="x1" and $pass=="123456" ){
    
$_SESSION["user"] = $user;
    
$_SESSION["path"] = "/home/x1/";
    echo 
"<script language='javascript'>window.top.location='./listar.php'</script>";
}else{
    echo 
"<script language='javascript'>window.top.location='./index.php'</script>";
}
?>
y en listar lo que hago muestro el contenido y genero la descarga obligatoria de la misma pagina.

listar.php
Código PHP:
<?
session_start
();
if (isset(
$_SESSION["user"])){
    
$name    =    base64_decode($_GET["id"]);
    
$name    =    base64_decode($name);    
    
$aTmp    =    explode("-",$name);

    if (
$aTmp[0]=="descargas"){
        
$enlace $_SESSION["path"]."$aTmp[1]";
        
header ("Content-Disposition: attachment; filename=".$aTmp[1]."\n\n"); 
        
header ("Content-Type: application/octet-stream"); 
        
header ("Content-Length: ".filesize($enlace)); 
        
readfile($enlace); 
        exit;
    }
?>
    <!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" >
    <link href="./style.css" rel="stylesheet" type="text/css">
    <body>
    <ul id="botones">
      <?
        
while ($archivo $directorio->read())     { 
            
$aux    =    base64_encode("descargas-".$archivo);
            for(
$i=0;$i<=9;$i++){
                
$id=base64_encode($aux);    
            }        
            print(
"<li>\n
            <div align=\"center\"><a href=\"?id=$id\"><span class=\"TexFil\">$archivo</span></a></div>\n
            </li>\n"
);
        } 
        
$directorio->close(); 
    }else{
        echo 
"<script language='javascript'>window.top.location='../index.php'</script>";
    }
    
?> 
</ul>
</p>
</body>
</html>

si tienen, este metodo para realizar descargas es buenisimo, asi no te roban la url por que aunque la tengan no van a poder descargar si no iniciaron sesion
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:23.