Foros del Web » Programando para Internet » PHP »

Thumbnails y sus formatos.

Estas en el tema de Thumbnails y sus formatos. en el foro de PHP en Foros del Web. hola!!!!. miren lo que pasa es que yo estoy haciendo un sistema de imagenes por alli me encontre uno, no se quien lo elaboro creo ...
  #1 (permalink)  
Antiguo 29/07/2006, 12:02
Avatar de Stickmaster2004  
Fecha de Ingreso: septiembre-2004
Ubicación: Barranquilla
Mensajes: 568
Antigüedad: 19 años, 6 meses
Puntos: 0
Thumbnails y sus formatos.

hola!!!!.

miren lo que pasa es que yo estoy haciendo un sistema de imagenes por alli me encontre uno, no se quien lo elaboro creo que fue cluster, yo queria preguntar como hago yo para que tambien se pueda aceptar imagenes del tipo .png y .gif ademas de .jpg que ya la manejo y bueno cuando mande otra de otro tipo pues que le mande un aviso diciendo que no se puede, les agradeceria mucho de su colaboracion.

bye.
__________________
Solo el que se basa en conocimiento basico y cultiva el aprendizaje obtendra sabiduria
  #2 (permalink)  
Antiguo 29/07/2006, 12:22
Avatar de Riven-Ward  
Fecha de Ingreso: julio-2006
Mensajes: 33
Antigüedad: 17 años, 8 meses
Puntos: 0
Tienes que agregar esas extensiones a la verificación... Si pusieras el código donde comprueba te podríamos ayudar mejor.

Salu2!
  #3 (permalink)  
Antiguo 29/07/2006, 12:39
Avatar de Stickmaster2004  
Fecha de Ingreso: septiembre-2004
Ubicación: Barranquilla
Mensajes: 568
Antigüedad: 19 años, 6 meses
Puntos: 0
<?
if (empty($_FILES['logo']['name'])){
ECHO "INTRODUCE ALGUN ARCHIVO";
exit;
}


// archivo temporal (ruta y nombre).
$binario_nombre_temporal=$_FILES['logo']['tmp_name'] ;

// leer del archvio temporal .. el binario subido.
// "rb" para Windows .. Linux parece q con "r" sobra ...
$binario_contenido = addslashes(fread(fopen($binario_nombre_temporal, "rb"), filesize($binario_nombre_temporal)));

$binario_nombre=$_FILES['logo']['name'];
$archie='imagenes/'.$binario_nombre;

$original = imagecreatefromjpeg($binario_nombre_temporal);
$thumb = imagecreatetruecolor(70,70); // Lo haremos de un tamaño 70x70

Ahora bien, pues para los jpg, va bien el codigo, pero cuando intruduzco por ejemplo un .gif pues logico que sale error por esto:imagecreatefromjpeg, que en ese caso seria imagecreatefromgif, necesitaria saber de que tipo es el archivo que estoy recibiendo.
__________________
Solo el que se basa en conocimiento basico y cultiva el aprendizaje obtendra sabiduria
  #4 (permalink)  
Antiguo 29/07/2006, 13:14
Avatar de Riven-Ward  
Fecha de Ingreso: julio-2006
Mensajes: 33
Antigüedad: 17 años, 8 meses
Puntos: 0
Hay varias formas.

Una es viendo si el archivo contiene la palabra "gif" o "png" entremedio, pero es algo insegura, pues puedes llamar el archivo asi: algo.gif.php y te juankean :P.

Otra forma es separando el nombre del archivo por "." (puntos) y tomar el último, que vendría siendo la extensión. Algo asi:

Código PHP:
<?php
$nombre 
"algo.gif";
$nombre explode ("."$nombre);
$total count ($nombre);
$ext $nombre[$total];
if (
$ext == "gif") {
[...]
}
?>
Salu2!
  #5 (permalink)  
Antiguo 31/07/2006, 07:46
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Cita:
Iniciado por Riven-Ward
Hay varias formas.

Una es viendo si el archivo contiene la palabra "gif" o "png" entremedio, pero es algo insegura, pues puedes llamar el archivo asi: algo.gif.php y te juankean :P.

Otra forma es separando el nombre del archivo por "." (puntos) y tomar el último, que vendría siendo la extensión. Algo asi:

Código PHP:
<?php
$nombre 
"algo.gif";
$nombre explode ("."$nombre);
$total count ($nombre);
$ext $nombre[$total];
if (
$ext == "gif") {
[...]
}
?>
Salu2!
Lo más seguro no es ver el nombre del archivo (su extensión) para ese tipo de validaciones .. Fijate lo simple que sería cambiar la extensión de tu archivo: malicioso.exe a malicioso.jpg y pasar tu validación ..

Para una mejor seguridad usa el formato MIME del archivo que se leé directamente del archivo y lo tienes en $_FILES['logo']['type'] .. Te devolverá algo como "image/jpeg" .. o similar dependiendo del tipo de archivo .. Eso es lo que debes validar.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 31/07/2006, 07:53
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Cita:
Iniciado por Stickmaster2004
<?
if (empty($_FILES['logo']['name'])){
ECHO "INTRODUCE ALGUN ARCHIVO";
exit;
}


// archivo temporal (ruta y nombre).
$binario_nombre_temporal=$_FILES['logo']['tmp_name'] ;

// leer del archvio temporal .. el binario subido.
// "rb" para Windows .. Linux parece q con "r" sobra ...
$binario_contenido = addslashes(fread(fopen($binario_nombre_temporal, "rb"), filesize($binario_nombre_temporal)));

$binario_nombre=$_FILES['logo']['name'];
$archie='imagenes/'.$binario_nombre;

$original = imagecreatefromjpeg($binario_nombre_temporal);
$thumb = imagecreatetruecolor(70,70); // Lo haremos de un tamaño 70x70

Ahora bien, pues para los jpg, va bien el codigo, pero cuando intruduzco por ejemplo un .gif pues logico que sale error por esto:imagecreatefromjpeg, que en ese caso seria imagecreatefromgif, necesitaria saber de que tipo es el archivo que estoy recibiendo.
En ese caso monta un switch() en función de formato MIME del archivo .. Así decides que función imagecreatefromXXXX() o imageXXX() funciones:

www.php.net/gd

A todo esto .. con GIF no es seguro que te funcione en todos los casos .. sobre toco con diferentes versiones de GD .. OJO con eso .. Para PNG no tendrás problemas.

Por si acaso .. el "tutorial" que hacen referencia (o por lo menos el que hice yo) es:
http://www.forosdelweb.com/f18/tutorial-ejemplo-subir-archivos-bd-guardando-bd-binario-127775/

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 08:57.