Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] funcion, array y $_POST

Estas en el tema de funcion, array y $_POST en el foro de PHP en Foros del Web. Hola. Me ha resultado muy dificil encontrar alguna solucion a esto y lo que he aplicado de explicaciones sobre cómo obtener valores de dentro de ...
  #1 (permalink)  
Antiguo 04/03/2016, 12:22
 
Fecha de Ingreso: marzo-2005
Mensajes: 201
Antigüedad: 19 años
Puntos: 0
Desacuerdo funcion, array y $_POST

Hola. Me ha resultado muy dificil encontrar alguna solucion a esto y lo que he aplicado de explicaciones sobre cómo obtener valores de dentro de una función, no me sirvió.
Necesito obtener por fuera de la funcion los valores de $nuevo_nombre y $nombre_original que se generan en la funcion.
La funcion recibe los datos de un archivo subido por POST, obtiene su nombre, su extensión, genera un nuevo nombre (aleatorio), lo copia a una carpeta y lo renombra.

Código PHP:
function sube_arch($temp,$nom,$dir){
    
$nombre_original $nom
    
$qwe=pathinfo($nombre_original);
    
$ext_archstrtolower($qwe['extension']);    
    
$nuevo_nombre_archmd5(mt_rand(1000,9999)).".".$ext_arch;
    
$ruta $dir.$nom;
    
copy ($temp,$ruta);
    
rename($dir.$nom,$dir.$nuevo_nombre_arch);    
    }

// y llamo a la funcion para que suba el archivo:

sube_arch($_FILES['archivo']['tmp_name'],$_FILES['archivo']['name'],"ARCHIVOS/"); 
La subida del archivo renombrado funciona ok, pero no se cómo obtener los valores de $nuevo_nombre y $nombre_original que se generan en la funcion para utilizarlos fuera de ella.
Cuando la pruebo agregando "return array ($nombre_nuevo,$nombre_original)" pero me da Warning: Missing argument 1 for sube_arch(), called in ... line (la linea de la funcion)
  #2 (permalink)  
Antiguo 04/03/2016, 12:37
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: funcion, array y $_POST

Código PHP:
Ver original
  1. <?php
  2. function sube_arch($temp,$nom,$dir){
  3. // creas un array para los valores a devolver.
  4. $r=array();
  5.     $nombre_original = $nom;
  6.     $qwe=pathinfo($nombre_original);
  7.     $ext_arch= strtolower($qwe['extension']);    
  8.     $nuevo_nombre_arch= md5(mt_rand(1000,9999)).".".$ext_arch;
  9.     $ruta = $dir.$nom;
  10.     copy ($temp,$ruta);
  11.     rename($dir.$nom,$dir.$nuevo_nombre_arch);    
  12. //añades los valores que quieras devolver al array
  13. $r['nuevo']=$nuevo_nombre;
  14. $r['original']=$nombre_original;
  15. // devuelves el array
  16. Return  $r;
  17.     }
  18.  
  19. // y llamo a la funcion para que suba el archivo:
  20.  
  21. // guardas lo que la función devuelva en una variable
  22. $valores_devueltos=sube_arch($_FILES['archivo']['tmp_name'],$_FILES['archivo']['name'],"ARCHIVOS/");  
  23.  
  24. // y ya lo tienes disponible
  25. echo $valores_devueltos['nuevo'];
  26. echo $valores_devueltos['original'];
  27. ?>

Última edición por xerifandtomas; 04/03/2016 a las 12:43
  #3 (permalink)  
Antiguo 04/03/2016, 13:01
 
Fecha de Ingreso: marzo-2005
Mensajes: 201
Antigüedad: 19 años
Puntos: 0
Respuesta: funcion, array y $_POST

5 letras: G E N I O

Muchas gracias!

Dejo la version final con una correcion en el codigo:
Código PHP:
function sube_arch($temp,$nom,$dir){
    
$nombre_original $nom;
    
$qwe=pathinfo($nombre_original);
    
$ext_archstrtolower($qwe['extension']);    
    
$nuevo_nombre_archmd5(mt_rand(1000000,9999999)).".".$ext_arch;
    
$ruta $dir.$nom;
    
copy ($temp,$ruta);
    
rename($dir.$nom,$dir.$nuevo_nombre_arch);    
    
//creas un array para los valores a devolver.
    
$r=array();
    
$r['nuevo']=$nuevo_nombre_arch;
    
$r['original']=$nombre_original;
    
// devuelves el array
    
return  $r;
    }

// guardas lo que la función devuelva en una variable
$valores_devueltos=sube_arch($_FILES['archivo_1']['tmp_name'],$_FILES['archivo_1']['name'],$DIR_ARCH);  
 
// y ya lo tienes disponible
echo $valores_devueltos['nuevo'];
echo 
$valores_devueltos['original']; 

Etiquetas: funcion, post
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 02:34.