Ver Mensaje Individual
  #8 (permalink)  
Antiguo 26/04/2010, 11:49
Avatar de hieloverde
hieloverde
 
Fecha de Ingreso: julio-2005
Ubicación: México, D.F
Mensajes: 467
Antigüedad: 18 años, 9 meses
Puntos: 5
Respuesta: Guardar salida de un formulario y luego interpretarlo

Bueno, cerrando este tema de buena forma, finalmente me fue mas factible usar el CGI para procesar los datos POST incluyendo archivos y luego ya en PHP retomar unicamente las referencias.

Para dejarlo mas claro, el CGI procesa toda la salida del formulario y si hay archivos los pone en un directorio temporal con el nombre la sesion, luego genero un archivo cuyo contenido (en formato JSON) almacena todos los datos POST y referencias a los archivos guardados (aplicando el principio propuesto por abimaelrc). Entonces en PHP posteriormente leo este archivo y lo decodifico con JSON y asi obtengo el objeto.

Ejemplo:

Código PHP:
/* Esto para un campo */
$objeto->post->nombre_campo;

/* Esto para un archivo */
$objeto->files->nombre_campo_file->tmp_name
Antes de llegar a esta solución habia comenzado con el desarrollo de una pequeña función que me procesara la post data (como pretendia en un principio). No tuve ocasión de finalizarla, pero la publico por si alguien le sirve:

Código PHP:
<?php
    
function interpretar_postdata($archivo_postdata)
    {        
        
/* Solo si el archivo existe */        
        
if(file_exists($archivo_postdata))
        {
            
/* Obtener el contenido */
            
$postdata file($archivo_postdata);
            
/* Obtener identificador */
            
$id_form $postdata[0];

            
/* Eliminar el inicio y el fin */            
            
for($x=1$x<count($postdata)-1$x++)
            {
                
$fpost[$x] = $postdata[$x];    
            }            
            
            
$unido implode("",$fpost);
            
            
/* Procesamos cada elemento del formulario */
            
$elementos explode($id_form,$unido);
            foreach(
$elementos as $i_elem=>$c_elem)
            {
                
$lineas[$i_elem] = explode("\r\n",$c_elem);
                
                
$campo[$i_elem]['content-disposition']    = explode(";",substr($lineas[$i_elem][0],strpos($lineas[$i_elem][0],":")+1));            
                for(
$y=1$y<count($campo[$i_elem]['content-disposition']); $y++)
                {
                    
$etq $campo[$i_elem]['content-disposition'][$y] = trim(str_replace('"','',$campo[$i_elem]['content-disposition'][$y]));
                    
$etq explode("=",$etq);
                    
                    
$temp_infocampo[$i_elem][$y] = array($etq[0]=>$etq[1]);    
                }
                unset(
$campo[$i_elem]);
                
$campo[$i_elem] = $temp_infocampo[$i_elem];
                unset(
$temp_infocampo[$i_elem]);
                
                
/* Es un archivo */                
                
if($campo[$i_elem][2]['filename'] != "")
                {
                    
$id_file $campo[$i_elem][1]['name'];
                    
$type =     substr($lineas[$i_elem][1],strpos($lineas[$i_elem][1],":")+1);                
                    
                    for(
$j=2$j<count($lineas[$i_elem]); $j++)
                    {
                        
$contenido[$j] = $lineas[$i_elem][$j];
                    }
                    
                    
$contenido implode("\r\n",$contenido);
                    
                    
/* Procesar los archivos, no tuve tiempo de implementarlo */
                
}
                
/* No es un archivo */
                
else
                {
                    
                }
             }
            return 
$contenido;
        }
        else
        {
            return 
false;    
        }    
    }
?>
Saludos,
__________________
<? echo("1 <script> dice + que 1000 palabras"); ?> EspacioMéxico