Foros del Web » Programando para Internet » PHP »

Duda Variables de Sesion y Pdf

Estas en el tema de Duda Variables de Sesion y Pdf en el foro de PHP en Foros del Web. Hola!! Queria hacerles dos consultas mas que nada teoricas (imagino). He creado una sesion con session_start() para guardar id de favoritos en un array llamado ...
  #1 (permalink)  
Antiguo 28/09/2012, 18:42
 
Fecha de Ingreso: marzo-2012
Mensajes: 102
Antigüedad: 12 años, 1 mes
Puntos: 1
Duda Variables de Sesion y Pdf

Hola!!
Queria hacerles dos consultas mas que nada teoricas (imagino).

He creado una sesion con session_start() para guardar id de favoritos en un array llamado $_SESSION["favoritos"][].
Ello se realiza sin loguearse ya que no me importa que al cerrar el navegador estos se pierdan.
El array es luego recorrido, y usando [URL="http://www.fpdf.org/"]FPDF[/URL], genero un pdf con toda la información del favorito partiendo de su id.

Las consultas son:
1) Si hay varios usuarios en simultaneo agregando favoritos, el array $_SESSION["favoritos"][] se sobreescribiria o puedo usarlo sin problemas?
Sobre esta consulta, creeria que no hay problemas.. no es cierto?

2) El script usado al final genera un pdf en mi directorio llamado "favoritos.pdf", que permite descargarse.
Pero de forma similar a la primer consulta, este seria sobreescrito por diferentes usuarios si clickearan generar todos a la vez?

el script es el siguiente:

Código:
<?php
session_start();
include('/fpdf/fpdf.php');


$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,$_SESSION["favoritos"][0]);
//$pdf->Output();
$pdf->Output("favoritos.pdf", 'F');

header('Content-disposition: attachment; filename=favoritos.pdf');
header('Content-type: application/pdf');
readfile('favoritos.pdf');
?>
Aqui, si estoy en duda. Como debiera hacer para crear un archivo temporal con nombre unico para cada usuario y que se borrara al ser descargado? (sino imagino que el espacio usado en el servidor creceria si manualmente no se borraran despues).

Les agradezco su ayuda en estas consultas,
saludos a todos!!
  #2 (permalink)  
Antiguo 28/09/2012, 19:30
 
Fecha de Ingreso: septiembre-2012
Mensajes: 10
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Duda Variables de Sesion y Pdf

Hola

En el primer caso no habria problema. Las sessiones se ejecutan en el navegador, por lo que cada navegador tendra sus propias sessiones.

En el caso del pdf si habra problema, pues todos van a acceder al archivo. Podrias definir una id unica para cada usuario y meterla en una session, una vez asi, le asignas ese id al pdf por ejemplo

archivo_{id}.pdf

Y asi cada usuario tendra su propio archivo.
  #3 (permalink)  
Antiguo 28/09/2012, 21:14
 
Fecha de Ingreso: marzo-2012
Mensajes: 102
Antigüedad: 12 años, 1 mes
Puntos: 1
Respuesta: Duda Variables de Sesion y Pdf

Gracias MayLess por tu pronta respuesta!

Sabes como deberia establecer el id para asegurarme que no se repita? Estaba pensando en hacer pdf incrementales ej "fav_1, fav_2, etc" chequeando que existan en el directorio. Aunque seria con un for loop, no se si seria lo mas practico..
Por ultimo, hay alguna manera de borrar automaticamente el pdf una vez creado y descargado?

saludos y gracias nuevamente!
  #4 (permalink)  
Antiguo 01/10/2012, 17:36
 
Fecha de Ingreso: marzo-2012
Mensajes: 102
Antigüedad: 12 años, 1 mes
Puntos: 1
Respuesta: Duda Variables de Sesion y Pdf

Buenas de nuevo!

He realizado el script que necesitaba y lo dejo aqui por si alguien puede encontrarse en busca de algo similar.

Lo que hago es crear un pdf a partir de datos obtenidos de la base de datos, utilizando la libreria FPDF.


Le doy al pdf el nombre de "Favoritos-".$fecha_actual.".pdf" (Ej. "Favoritos-02-10-2012.pdf").
Luego con la siguiente funcion chequeo que no exista un archivo con ese nombre. Si existe, le agrego el sufijo "_".$i" (Ej. "Favoritos-02-10-2012_2.pdf"):
Código:
// FUNCION PARA CHECKEAR SI EL NOMBRE DEL PDF EXISTE
$fecha = date("d-m-Y");
$filename_pdf = "Favoritos-".$fecha.".pdf";

$i = 1;
while (file_exists("pdf/".$filename_pdf)):
    $filename_pdf = "Favoritos-".$fecha."_".$i.".pdf";
    $i++;
endwhile;
Exporto el pdf con FPDF y le digo si quiero que se vea en el navegador, o bien descargado:
Código:
// EXPORTAMOS EL DOCUMENTO
$pdf->Output("pdf/".$filename_pdf, 'F');
// PARA PREGUNTAR EN QUE CARPETA DESCARGAR
header('Content-disposition: attachment; filename=pdf/'.$filename_pdf);
// PARA CARGAR DIRECTAMENTE EN EL NAVEGADOR
//header('Content-type: application/pdf');
// LEEMOS EL DOCUMENTO PDF
readfile('pdf/'.$filename_pdf);
Para finalizar, con el objetivo de que no se acumule una infinidad de pdf creados por usuarios dentro del servidor, utilizo una funcion para borrar aquellos más antiguos a 5 minutos (Si 5 minutos...... bien limpia la carpeta).
Código:
// ARCHIVOS ANTIGUOS A 5 MINUTOS SERAN BORRADOS
// NOMBRE DE LA CARPETA EN CUESTION
$DIR = 'pdf/';
if ($handle = opendir($DIR)) {

    // RECORREMOS UNA Y OTRA VEZ EL DIRECTORIO
    while (false !== ($file = readdir($handle))) {
        if ( filemtime($DIR.$file) <= time()-60*5 ) { // AQUI ESTABLECEMOS EL TIEMPO: 60*5 (DURACION DE UN MINUTO EN SEGS * CANTIDAD DE MINUTOS
           unlink($DIR.$file);
        }
    }
    closedir($handle);
}
Espero sirva! saludos y gracias MayLess por tu ayuda!
  #5 (permalink)  
Antiguo 01/10/2012, 18:46
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Duda Variables de Sesion y Pdf

No veo la necesidad de guardar archivos en el servidor cuando se pueden enviar directamente al navegador y te evitas el problema de espacio en disco o si dos o más usuarios quieren generar PDF al mismo tiempo, etc.

http://www.fpdf.org/es/doc/output.htm
__________________
- León, Guanajuato
- GV-Foto
  #6 (permalink)  
Antiguo 02/10/2012, 06:47
 
Fecha de Ingreso: marzo-2012
Mensajes: 102
Antigüedad: 12 años, 1 mes
Puntos: 1
Respuesta: Duda Variables de Sesion y Pdf

Triby, gracias por tu respuesta!
Se me habia pasado por alto esa accion del método "Output" y la verdad resulta a varias leguas mas practica que la funcion del final..
De todas formas quizas a alguien le sirva para otra cosa el ejemplo,
te agradezco tu aporte, enseguida lo implementare!

saludos!

Etiquetas: pdf, variables, usuarios
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 01:00.