Foros del Web » Programando para Internet » PHP »

$files , mime, y demas cosas no entiendo

Estas en el tema de $files , mime, y demas cosas no entiendo en el foro de PHP en Foros del Web. hola , quisiera saber , si me puede ayudar a entender este pedazo de codigo.,.. lo que veo es esto... Código PHP:          foreach( $HTTP_POST_FILES  ...
  #1 (permalink)  
Antiguo 11/02/2013, 12:05
 
Fecha de Ingreso: junio-2010
Mensajes: 752
Antigüedad: 10 años, 1 mes
Puntos: 5
$files , mime, y demas cosas no entiendo

hola , quisiera saber , si me puede ayudar a entender este pedazo de codigo.,..
lo que veo es esto...



Código PHP:
        foreach($HTTP_POST_FILES as $name => $value){
                    
$newname explode('_',$name);
                    if(
$newname[0] == 'foto'){
                        if(isset(
$HTTP_POST_FILES[$name]) && file_exists($HTTP_POST_FILES[$name]['tmp_name'])){
                            
$datos_original getimagesize($HTTP_POST_FILES[$name]['tmp_name']);
                            
$ext str_replace('e','',str_replace('image/','',$datos_original['mime']));
                            if(
$ext == 'jpg'){
                                if((int)(
$newname[1])){
                                    
$query mysql_query("SELECT * FROM `locales_fotos` WHERE `id`='{$newname[1]}'");
                                    if(
$result mysql_fetch_assoc($query)){
                                        
$foto $result['name'];
                                    }
                                }else{
                                    
$foto uniqid();
                                    
mysql_query("INSERT INTO `locales_fotos` (`name`,`id_local`) VALUES ('$foto','$subseccion')");
                                }
                                
image($HTTP_POST_FILES[$name]['tmp_name'],600,395,'../locales/fotos/'.$foto.'.jpg');
                            }else{
                                
$mensaje .= 'La imagen debe ser tipo JPG<br/>';
                            }
                        }
                    }
                } 


en el array , http_post_files, tengo los archivos que se cargaron... el foreach, me tira los nombres de cada uno , mientras lo recorre..
se supone , que todos los nombre deben tener este formato...

foto_perro.jpg.
foto_gato.jpg
foto_pato.jpg

el explode, lo separa por el guion bajo.
despues verifica si tiene un valor , el archivo ,en su campo nombre, y si esta cargado temporalmente...

luego con la funcion ..getimagesize , puede extraer, el alto, ancho , tipo de archivo...lo extrae en el array, $datos_originales....

lo que no entiendo , para que sirve el valor MIME..? es como un thumbail, para correo electronico, no tengo idea...
lo que si veo , que realiza, varios str_replace, para terminar, en que tipo de archivo es ... pero no era mas facil saber el tipo de archivo, cuando la funcion getimagesize, me lo devolvia en el cuarto parametro,,,


en esta linea...
es

$ext = str_replace('e','',str_replace('image/','',$datos_original['mime']));
...

buenos despues me doy cuenta, que el formato del nombre de las imagenes, eran...

FOTO_"id_del_archivo", ya que vuelve a usar el array donde hizo el explode al principo,, para tomar el ID...
verifica si es entero..
y bueno busca los datos, en el SQL...creo que me traera un unico registro...
sera el nombre de la foto, para despues,

con la funcion image, me cargara la imagen...

en el caso de que no era entero este valor. genera un nuevo nombre, con uniquid()
y lo inserta,

osea la idea , fue PRIMERO cargar el nombre en la base de datos y DESDEPUES CARGAR LA IMAGEN AL SERVIDOR; no ? bueno, mi duda es si todo lo que escribi es correcto....
  #2 (permalink)  
Antiguo 11/02/2013, 16:40
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.073
Antigüedad: 11 años, 10 meses
Puntos: 2221
Respuesta: $files , mime, y demas cosas no entiendo

1- No debes usar $HTTP_POST_FILES, sino $_FILES
2- La mejor forma de verificar si se subió un archivo correctamente es revisando que $_FILES['archivo']['error'] sea igual a cero
3- No confíes en $_FILES['archivo']['mime_type'], ya que es proporcionado por el navegador y, por tanto, manipulable por el usuario
4- Puedes obtener la extensión haciendo un $ext = end(explode('.', $_FILES['archivo']['name'])); y tal vez convertir a minúsculas, por si las dudas, ya ves que las cámaras suelen usar sólo mayúsculas para nombres y extensiones.
5- Me parece que haces mucha revoltura innecesaria para subir archivos, de entrada, forzar al usuario a que el nombre sea foto_algo.ext
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: cosas, mime, mysql, registro, select, sql
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 10:41.