Ver Mensaje Individual
  #2  
Antiguo 20-05-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Reputación: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Cita:
¿A que podria deberse que ni siquiera me imprime los valores de la variables $userfile_xxx ?. por que no se pasan los atributos de "userfile" desde la pagina guardar.php?
Ayer o anteayer tuve que repasar el Manual de manejo de envío de archivos con PHP. Creo que en ese documento tienes la solución a tu problema, al menos para lo que toca a que no recibas información en las variables "$userfile_xxx".

Es posible que la directiva "register globals" de PHP esté desactivada y por eso no puedas acceder a esas variables, o, por mejor decir, esas variables no contienen la información que precisas.

En su lugar, según el manual hay que utilizar el "Array global" "$_FILES". Porque además tienes que tener en cuenta que la directiva "register globals" no se recomienda que esté activada.

Yo creo que echando un vistazo al documento susomentado no tendrás problemas para continuar adelante. Fíjate en el uso de la función "is_uploaded_file", que puede serte de utilidad en estos casos.

Yo te pongo aquí un poco de código de unas pruebas que hize ayer o anteayer, pero, no dejes de revisar este ejemplo que te propone el manual, y observa cómo puede averiguarse, con la función "is_uploaded_file", un posible intento de "entrada maliciosa" en nuestro sitio Web.

Código PHP:
/* In PHP 4.1.0 or later, $_FILES should be used instead of $HTTP_POST_FILES.
*/
if (is_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name']))
{
  
copy($HTTP_POST_FILES['userfile']['tmp_name'], "/place/to/put/uploaded/file");
}
else
{
  echo 
"Possible file upload attack. Filename: " $HTTP_POST_FILES['userfile']['name'];

A continuación mi aportación de código, recogido de las pruebas de ayer o anteayer y adaptado ("userfile") al formulario que tratas de utilizar, y que por cierto no parece ser el problema, dicho sea de paso:

Código PHP:
if (@is_uploaded_file($_FILES['userfile']['tmp_name']))
{    
  
$nombre  $_FILES['userfile']['name'];
  
$tipo    $_FILES['userfile']['type'];
  
$tamano  $_FILES['userfile']['size'];
  
$rutatmp $_FILES['userfile']['tmp_name'];
  
  
/* En este caso recuperamos el contenido del archivo
     por supuesto que aquí tú podrías hacer con el archivo
     lo que te fuera oportuno, no sólo leer su contenido
  */
  
$contenido file_get_contents($rutatmp);  

  
/* Y acto seguido lo borramos, si damos con él
  */
  
if(file_exists($rutatmp)) unlink($rutatmp); 

Bueno. Creo que ya es bastante, y hasta demasiado, a ver si puedes solucionar el problema de la subida de archivos. Por otro lado... respecto del campo "LongBlob" en la base de datos, para albergar imágenes, lo cierto es que no pasé del campo "Blob" nunca, y no tengo experiencia en estos temas.

No sé si incluso sería mejor almacenar los archivos de imagen en el disco duro y no en una base de datos, pero, en todo caso, aquí te dejo un enlace en donde se trata lo que tratas tú de llevar a cabo: subir, guardar y mostrar imágenes con PHP y MySQL.

- Mostrar una imagen desde un campo "blob"
- Guardar una imagen en una base de datos

Ya dirás qué tal te fue con el tema.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita