Lo primero que te recomiendo es no usar el archivo temporal. Primero verificás el archivo con if(is_uploaded_file($_FILES['imagen']['tmp_name']) en lugar de sólo if($_FILE...). Luego, movés el archivo a una carpeta temporal propia y trabajás con ese archivo, esto evitará que falle la redimensión si suben archivos muy grandes:
Código PHP:
move_uploaded_file($_FILES['imagen']['tmp_name'],'imagentemporal.jpg');
A partir de ahí, hacés todo el proceso con imagentemporal.jpg. El mismo debería incluir una segunda validación del tipo de archivo, ya que no te podés fiar de la extensión. Esto lo podés hacer fácilmente con get_image_size().
Por lo que es el nombre de archivo, podés hacer algo así:
Código PHP:
$nombre=$_FILES['imagen']['name'];
$partes=explode('.',$nombre);
$extension=$partes[count($partes)-1];
array_pop($partes);
$nombre=implode('',$partes);
//finalmente, validar el nombre de archivo para evitar que te vaya a parar a otro directorio
$nombre=preg_match('/[^a-z0-9\._-]*/si','',$nombre);
En definitiva, tu código quedaría:
Código PHP:
if(is_uploaded_file($_FILES['imagen']['tmp_name'])) {
$temp='imagenes_temporales/imagen.jpg';
move_uploaded_file($_FILES['imagen']['tmp_name'],$temp); //NO se mueve con rename
$isz=get_image_size($temp);
if($isz[1]!=IMAGETYPE_JPEG) {
//formato invalido
} else {
$nombre=$_FILES['imagen']['name'];
$partes=explode('.',$nombre);
$extension=$partes[count($partes)-1];
array_pop($partes);
$nombre=strtolower(implode('',$partes));
$nombre=preg_match('/[^a-z0-9\._-]*/si','',$nombre);
$dir_new_g = '../data/categoria_seccion/g'.date("Ymd_His").$nombre.'.jpg';
$dir_new_c = '../data/categoria_seccion/c'.date("Ymd_His").$nombre.'.jpg';
$img = new ResizePicture($temp);
$tam = $img -> getWidth();
if($tam > 610){
$tama = 610;
}else{
$tama = $tam;
}
cambiar_segun_ancho($temp,$dir_new_g,$tama);
cambiar_alto_y_ancho($temp,$dir_new_c,90,90);
}
}
Claro que en la base de datos lo que guardás es $nombre o $nombre.'.jpg'.
Espero que sirva, saludos.