Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PHP (https://www.clubdelphi.com/foros/forumdisplay.php?f=15)
-   -   Acceso a directorios en PHP (https://www.clubdelphi.com/foros/showthread.php?t=25306)

mieltxo 19-09-2005 14:39:38

Acceso a directorios en PHP
 
Buenas tardes,

Tengo un problema bastante gordo al intentar listar los ficheros de un directorio compartido.

El problema esta en que solo puedo listar los ficheros dentro de la red local, y quisiera listar los que estuvieran fuera de mi red. Supongo que por privilegios no tengo acceso.. ¿Alguien sabe como lo puedo solucionar?

El error es: Invalid to open dir: invalid argument

Código PHP:

 if ($handleo opendir("\\\\".gethostbyname($_SERVER['REMOTE_ADDR'])."\\dibujados\\")) {
   while (
false !== ($filem readdir($handleo))) {
     if (
$filem != "." && $filem != "..") {
       echo 
"$filem\n";
     }
   }
 } 

Gracias por vuestra ayuda

salvica 25-09-2005 17:48:54

Podría ser por el sentido de las barras?

Cita:

Empezado por mieltxo
Buenas tardes,
Código PHP:

  if ($handleo opendir("\\\\".gethostbyname($_SERVER['REMOTE_ADDR'])."\\dibujados\\")) {
    while (
false !== ($filem readdir($handleo))) {
      if (
$filem != "." && $filem != "..") {
        echo 
"$filem\n";
      }
    }
  } 


Ponlo así
Código PHP:

 if ($handleo opendir("//".gethostbyname($_SERVER['REMOTE_ADDR'])."/dibujados/")) {
     while (
false !== ($filem readdir($handleo))) {
       if (
$filem != "." && $filem != "..") {
         echo 
"$filem\n";
       }
     }
   } 

Saludos
Salvica

mieltxo 27-09-2005 11:23:50

No, las barras están correctamente. Ya lo probé hace tiempo y no me funciona del modo que planteas :(

Parecen ser problemas de permisos al acceder a otras redes...

salvica 27-09-2005 22:51:32

Es que, no sé si me equivoco, da la impresión que estás intentando leer la estructura de directorios de otro sistema ajeno al que ejecuta la script, ya que: (del manual de php)

string gethostbyname ( string hostname)
Código PHP:

 (PHP 3PHP 4 PHP 5
 
gethostbyname -- Obtiene la dirección IP  correspondiente al nombre de una máquina conectada a Internet

Teniendo en cuenta que php se ejecuta en el lado del servidor, la búsque da ficheros se debería realizar en éste, y las "tres barras" deberian referenciar la estructura del ordenador donde está montado el servidor (tipo "file:///" aunque esto último no lo he probado)

En fín, que pruebes lo siguiente: (copiado del manual)
Ejemplo 2. Listar todos los ficheros en un directorio excepto . y ..
Código PHP:

 <?php 
 
if ($handle opendir('.')) {
     while (
false !== ($file readdir($handle))) { 
         if (
$file != "." && $file != "..") { 
         echo 
"$file\n"
         } 
     }
     
closedir($handle); 
 }
 
?>


mieltxo 29-09-2005 10:00:28

Efectivamente, has entendido bien.

Leo una estructura de directorio ajeno dentro de mi propia red local, y funciona correctamente.

El problema esta en que quiero hacer lo mismo en un sistema ajeno que no este dentro de mi propia red local. Pero no se como puedo solventar los problemas de seguridad para acceder a otro sistema mediante PHP.

Un saludo

salvica 29-09-2005 11:26:50

Te paso un pedazo de una script que en su día encontré en internet, para comprobar la ip real del visitante a una página, ya que la ip que devuelve "REMOTE_ADDR" puede estar enmascarada por un proxy, router, etc. A lo mejor te sirve de algo ;)
Código PHP:

 /*
   +---------------------------------------------------------------------------
   | Calcular los datos de la IP entrante
   |        - IP del usuario
   |        - IP del HOST de donde viene
   |        - NOMBRE del HOST de donde viene
   +---------------------------------------------------------------------------
 */
   
if( isset($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"]) ) {
       
$ip_user    $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"];
       
$ip_host    $HTTP_SERVER_VARS["REMOTE_ADDR"];
       
$array      split", "$ip_user );
       
$url_host   = @gethostbyaddr$array[0] );
   } else {
       
$ip_user    $_SERVER["REMOTE_ADDR"];
       
$ip_host    $_SERVER["REMOTE_ADDR"];
       
$url_host   = @gethostbyaddr($ip_host);
   }
   
$port_host  $_SERVER["REMOTE_PORT"];
   
$navegador  $_SERVER["HTTP_USER_AGENT"];
   if( isset(
$_SERVER["HTTP_REFERER"]) ) {
       
$vieneDe    $_SERVER["HTTP_REFERER"];
       
$pos        strpos$vieneDe"?" );
       if( 
$pos===false ) { // nota: tres signos igual
      // no encontrado, el script se ejecuta en local ...
       
} else {
           
$vieneDesubstr$vieneDe0$pos );
       }
   } else {
       
$vieneDe    $url_host;
   } 

Luego puedes utilizar la ip del usuario o la del host, indistintamente.

Saludos
salvica


La franja horaria es GMT +2. Ahora son las 20:04:57.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi