Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: dimitrix en 1 Septiembre 2008, 16:23 pm



Título: Para subir de nivel
Publicado por: dimitrix en 1 Septiembre 2008, 16:23 pm
Bueno, pues tengo un problemita, no consigo ver los archivos que hay dentro de una carpeta con este código:

Código
  1. <?php
  2.  
  3. if ($gestor = opendir(".")) {
  4.    while (false !== ($archivo = readdir($gestor))) {
  5.        if ($archivo != "." && $archivo != "index.php" && $archivo != ".." && is_file($archivo)==TRUE) {
  6.            echo '<img border="0" src="img/icon_file.gif"> ';
  7.            echo '<a href="?h=';
  8. echo "$archivo\n";
  9. echo '" style="text-decoration: none">';
  10. echo "$archivo\n";
  11. echo "</a>";
  12. echo "<br>";
  13.        }
  14.    }
  15.    closedir($gestor);
  16. }
  17.  
  18.  
  19.  
  20. ?>

Lo que quiero es ver los archivos que hay dentro de la carpeta por ejemplo "img" y hago lo siguiente:

Código
  1. <?php
  2.  
  3. if ($gestor = opendir("./img")) {
  4.    while (false !== ($archivo = readdir($gestor))) {
  5.        if ($archivo != "." && $archivo != "index.php" && $archivo != ".." && is_file($archivo)==TRUE) {
  6.            echo '<img border="0" src="img/icon_file.gif"> ';
  7.            echo '<a href="?h=';
  8. echo "$archivo\n";
  9. echo '" style="text-decoration: none">';
  10. echo "$archivo\n";
  11. echo "</a>";
  12. echo "<br>";
  13.        }
  14.    }
  15.    closedir($gestor);
  16. }
  17.  
  18.  
  19.  
  20. ?>

Pero no me funciona he probado "img", "/img" lo he probado de todos modos y nada, en un código parecido si que me va perfectamente, pero ahí no se que pasa que no me va. No se que puede ser.

Un saludo.


Título: Re: Para subir de nivel
Publicado por: cassiani en 1 Septiembre 2008, 17:47 pm
Probaste con "../"  :huh:

Dependerá de donde se encuentre el script, por ejmplo, para este ejemplo yo me encuentro en la carpeta "htdocs" y para ver los archivos de la misma, le paso como parámetro la siguiente cadena:

Código
  1. $dir="../htdocs";
  2. if ($gestor = opendir($dir))

Pero si quisiera ver los archivos de una carpeta que se encuentra en el mismo directorio que el script, entonces basta con esto:
Código
  1. $dir = ("Carpeta/");

Cada vez que quieras ir atrás usas otro "../"


Título: Re: Para subir de nivel
Publicado por: dimitrix en 1 Septiembre 2008, 18:00 pm
Si lo se, lo he probado de todas las menera y nada, el código entero es este:

Código
  1. <head>
  2. <meta http-equiv="Content-Language" content="es">
  3. </head>
  4.  
  5.  
  6. <table border="0" width="1242" id="table1">
  7. <tr>
  8. <td width="160">&nbsp;</td>
  9. <td width="53">
  10. <p align="center"></td>
  11. <td width="1015">
  12. <p align="center">Navegador</td>
  13. </tr>
  14. <tr>
  15. <td width="160">
  16.  
  17. <?php
  18. echo ("<b>Carpetas: </b><br>");
  19.  
  20. if ($gestor = opendir(".")) {
  21.    while (false !== ($archivo = readdir($gestor))) {
  22.        if ($archivo != "." && $archivo != "img" && $archivo != ".." && is_dir($archivo)==TRUE) {
  23.            echo '<img border="0" src="img/icon_folder_open.gif"> ';
  24.            echo '<a href="?f=';
  25. echo "$archivo\n";
  26. echo '" style="text-decoration: none">';
  27. echo "$archivo\n";
  28. echo "</a>";
  29. echo "<br>";
  30.        }
  31.    }
  32.    closedir($gestor);
  33. }
  34.  
  35. echo ("<br><b>Historiales: </b><br>");
  36.  
  37. if ($gestor = opendir(".")) {
  38.    while (false !== ($archivo = readdir($gestor))) {
  39.        if ($archivo != "." && $archivo != "index.php" && $archivo != ".." && is_file($archivo)==TRUE) {
  40.            echo '<img border="0" src="img/icon_file.gif"> ';
  41.            echo '<a href="?h=';
  42. echo "$archivo\n";
  43. echo '" style="text-decoration: none">';
  44. echo "$archivo\n";
  45. echo "</a>";
  46. echo "<br>";
  47.        }
  48.    }
  49.    closedir($gestor);
  50. }
  51.  
  52.  
  53.  
  54. ?>
  55.  
  56. </td>
  57. <td width="53">
  58. </td>
  59. <td width="1015"><?php include($_GET[h]) ?></td>
  60. </tr>
  61. </table>

Estoy haciendo una aplicación publica para leer el historial de windows de la aplicación Pigdin sin el programa, para así no perderlos y poderlos leer de una forma "amena", aunque eso ahora es lo de menos.

Mira, tengo el código dentro del "index.php" y luego tengo una carpeta llamada "img" con dos imágenes que quiero que me liste para probar.

No me lista nada, pero si creo carpetas y archivos al lado de "index.php" y uso el código que te he pasado me lista todo bien.

(http://i214.photobucket.com/albums/cc173/dimitrix-es/Dibujo-15.jpg)


Título: Re: Para subir de nivel
Publicado por: cassiani en 1 Septiembre 2008, 19:10 pm
Citar
No me lista nada, pero si creo carpetas y archivos al lado de "index.php" y uso el código que te he pasado me lista todo bien.

a bueno... mira:

Citar
file_exists
(PHP 3, PHP 4, PHP 5)

Devuelve TRUE si el archivo o directorio especificado por nombre_archivo existe; o FALSE de lo contrario.

En windows, use //nombre_computadora/recurso/nombre_archivo o \\nombre_computadora\recurso\nombre_archivo para revisar archivos en recursos compartidos de red.

En ese caso, la cadena que le pasas a is_file($file) esta incompleta, ya que readdir() solo te devuelve el nombre del fichero.

Código
  1. if ($gestor = opendir("img/"))
  2. {
  3.    while (false !== ($archivo = readdir($gestor)))
  4.   {
  5.        $file = "./img/".$archivo;
  6.  
  7. if ($archivo != "." && $archivo != "index.php" && $archivo != ".." && is_file($file)==TRUE)
  8.       {
  9.  


Título: Re: Para subir de nivel
Publicado por: dimitrix en 1 Septiembre 2008, 19:19 pm
Bien, ya me funciona el código, muchas gracias, haber si tardo poco en terminarlo y lo subo por si a alguien le interesa esto, un saludo.