elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Manejo de ficheros en PHP
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Manejo de ficheros en PHP  (Leído 4,550 veces)
Jukuqs

Desconectado Desconectado

Mensajes: 73



Ver Perfil
Manejo de ficheros en PHP
« en: 9 Noviembre 2009, 19:20 pm »

Hola a todos.

Estaba intentando crear un script en PHP que copiara un fichero (una imagen mas concretamente) de una URL a una carpeta en mi seridor, está en un hosting privado pero tengo control casi total sobre este (o eso me gustaria pensar).

El caso es que al ejecutar la función:

Código
  1. copy($avatar, "/avatars/$id.$extension");

Donde:

Código
  1. $avatar = "http://foro.elhacker.net/Smileys/cowboy/grin.gif"; // Por ejemplo.
  2. $id = 29;  // Id del usuario.
  3. $extension = "jpeg";  // Podria ser cualquier otra.

Me devuelve:

Warning: copy() [function.copy]: URL file-access is disabled in the server configuration in /homepages/14/d298835369/htdocs/update.php on line 67

Warning: copy(http://foro.elhacker.net/Smileys/cowboy/grin.gif) [function.copy]: failed to open stream: no suitable wrapper could be found in /homepages/14/d298835369/htdocs/update.php on line 67

El error lo deja muy claro, el acceso a ficheros mediante URL esta deshabilitado en la configuración del servidor, ahora bien, ¿como lo habilito? Es decir, si con configuración del servidor se refiere a .htaccess, ¿que debo cambiar? Y si no lo hace ¿a que se refiere y como lo arreglo?

Huelga decir que la carpeta "avatars" tiene todos los permisos menos ejecución y el fichero update.php los tiene todos.

Gracias de antemano.


En línea

Red Mx
Rojito
Colaborador
***
Desconectado Desconectado

Mensajes: 3.649


Viva México Cabrones...


Ver Perfil WWW
Re: Manejo de ficheros en PHP
« Respuesta #1 en: 9 Noviembre 2009, 22:19 pm »

Código
  1. $avatar = "http://foro.elhacker.net/Smileys/cowboy/grin.gif"; // Por ejemplo.

Con esa linea le estas asigando el texto http://foro.elhacker.net/Smileys/cowboy/grin.gif  a la variable $avatar.


Primero tienes que  obtener la imagen guardar el archivo y cuando tengas el archivo entonces si copiarlo.

Código
  1. $id = 29;  // Id del usuario.
  2. $extension = "gif";  // Podria ser cualquier otra.
  3.  
  4. $imagen= file_get_contents('http://foro.elhacker.net/Smileys/cowboy/grin.gif'); // obtenermos el archivo
  5.  
  6. $fp=fopen('temporal.dat','w');        // Abrir el archivo para anexar al final
  7. fwrite($fp,$imagen);            // Escribir en el archivo
  8. fclose($fp);                    // Cerrrar el archivo
  9.  
  10. copy('temporal.dat', "/avatars/$id.$extension");
  11.  
  12. echo 'LISTO';
  13.  


Listo!!.


En línea

Desarrollar Malware Es Causa De Cancer...
Jukuqs

Desconectado Desconectado

Mensajes: 73



Ver Perfil
Re: Manejo de ficheros en PHP
« Respuesta #2 en: 9 Noviembre 2009, 23:02 pm »

Wow, no conocia la función get_file_contents ^.^, muchas gracias, mañana edito y te comento como me ha ido.

En mi defensa debo decir que cuando decia que $avatar = "" no pretendia hacer que la variable $avatar contubiera el fichero sino solo la dirección de este.

Muchissimas gracias de nuevo.
En línea

Jukuqs

Desconectado Desconectado

Mensajes: 73



Ver Perfil
Re: Manejo de ficheros en PHP
« Respuesta #3 en: 10 Noviembre 2009, 07:36 am »

Ains, edito para decir que el problema persiste, el error que devuelve ahora es:

Warning: file_get_contents() [function.file-get-contents]: URL file-access is disabled in the server configuration in /homepages/14/d298835367/htdocs/update.php on line 67

Warning: file_get_contents(http://foro.elhacker.net/Smileys/cowboy/grin.gif) [function.file-get-contents]: failed to open stream: no suitable wrapper could be found in /homepages/14/d298835367/htdocs/update.php on line 67

Warning: copy(/avatars/13.png) [function.copy]: failed to open stream: No such file or directory in /homepages/14/d298835367/htdocs/update.php on line 73

Creo que el problema esta en que el servidor no me deja acceder a ficheros mediante PHP.

El código es este:

Código
  1. if($avatarurl){
  2.  
  3.  $avatar = str_replace($forbidden, "", $avatarurl);
  4.  $alloweds = array('jpg','jpeg','png','gif','bmp');
  5.  if(!eregi('.', $avatar)){
  6.   echo "<script>alert(\"The avatar extension is missing!\");</script>";
  7.  
  8. echo "<meta http-equiv=\"refresh\" content=\"0; url=cp.php\">";
  9.  }else{
  10.          $extension = explode('.', $avatar);
  11.          $extension = $extension[count($extension) - 1];
  12.          foreach($alloweds as $allowed){
  13.           if($allowed == strtolower($extension)){
  14. $correct = true;
  15.   }
  16.  }
  17.  }
  18.  if ($correct != true) $correct = false;
  19.  
  20.  if($correct==true){
  21.  $query = mysql_query("SELECT id FROM usersdb WHERE username ='$username'") or die(mysql_error());
  22.  $data = mysql_fetch_array($query);
  23.  $id = $data['id'];
  24.  $imagen= file_get_contents($avatar);
  25.  
  26.  $fp=fopen('temporal.dat','w');
  27.  fwrite($fp,$imagen);
  28.  fclose($fp);
  29.  
  30.  copy('temporal.dat', "/avatars/$id.$extension");
  31.  $avatar = "/avatars/$id.$extension";
  32.  
  33.  $query = mysql_query("UPDATE usersdb SET avatar='$avatar' WHERE username ='$username'") or die(mysql_error());
  34.  }else{
  35.   echo "<script>alert(\"The avatar has a wrong format!\");</script>";
  36.  
  37. echo "<meta http-equiv=\"refresh\" content=\"0; url=cp.php\">";
  38.  }
  39.  
  40. }

Pero el problema esta básicamente aqui:

Código
  1. $imagen= file_get_contents($avatar);
  2.  
  3. $fp=fopen('temporal.dat','w');
  4. fwrite($fp,$imagen);
  5. fclose($fp);
  6.  
  7. copy('temporal.dat', "/avatars/$id.$extension");

Gracias de antemano!
En línea

‭‭‭‭BadStupidMonkey.

Desconectado Desconectado

Mensajes: 46



Ver Perfil WWW
Re: Manejo de ficheros en PHP
« Respuesta #4 en: 10 Noviembre 2009, 14:41 pm »

El servidor tiene deshabilitado el accesso a ficheros externos al servidor... o editas el php.ini en la linea allow_url_fopen o creas un .htaccess en el directorio con la linea php_value allow_url_fopen on ...




Saludos
En línea

Jukuqs

Desconectado Desconectado

Mensajes: 73



Ver Perfil
Re: Manejo de ficheros en PHP
« Respuesta #5 en: 10 Noviembre 2009, 16:23 pm »

Exacto! Era eso último, con ese cambio tanto mi código cómo el de Red Mx funcionan.

Muchas gracias a todos!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Manejo de ficheros: Me da el error al abrir el fichero, por que?
Programación C/C++
Firos 2 2,034 Último mensaje 11 Abril 2011, 16:15 pm
por Firos
Duda sobre manejo de ficheros
Programación C/C++
тαптяα 6 1,967 Último mensaje 8 Septiembre 2011, 22:06 pm
por тαптяα
Duda con manejo de Ficheros
Programación C/C++
Hack-11 3 1,638 Último mensaje 27 Noviembre 2011, 22:08 pm
por Eternal Idol
Manejo con ficheros
Programación C/C++
Eva93 1 951 Último mensaje 11 Septiembre 2013, 21:14 pm
por amchacon
Ayuda con manejo de ficheros en c++
Programación C/C++
ArashiTensei 8 2,332 Último mensaje 25 Noviembre 2014, 00:39 am
por ArashiTensei
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines