Foros del Web » Programando para Internet » PHP »

Bloquear un acceso a un PDF CREADO POR FPDF

Estas en el tema de Bloquear un acceso a un PDF CREADO POR FPDF en el foro de PHP en Foros del Web. Bueno, esto es solo a modo de algun comentario o script que me pueda ayudar en esto. Tengo un sistema, que genera un pdf de ...
  #1 (permalink)  
Antiguo 06/03/2008, 08:57
 
Fecha de Ingreso: enero-2008
Mensajes: 15
Antigüedad: 16 años, 2 meses
Puntos: 0
Bloquear un acceso a un PDF CREADO POR FPDF

Bueno, esto es solo a modo de algun comentario o script que me pueda ayudar en esto. Tengo un sistema, que genera un pdf de acuerdo a su id. cada id genera su propio pdf. y todo funciona muy bien. Pero, me surgió una duda si una persona cualquiera coloca la direccion que genera el pdf ejemplo:

http://localhost/xxx/imprimepdf.php?id=70


Puede acceder al pdf sin problemas y no necesariamente siendo la persona que genero ese pdf.


¿No habra una forma de bloquear el archivo?, para otras personas. Me refiero, si cuando pegan esta dirección http://localhost/xxx/imprimepdf.php?id=70 le salga que no tiene acceso o algo así solo lo pueda accesar el usuario que generó el pdf...

Aca dejó el script del pdf


Código PHP:

<?php

require ('fpdf/fpdf.php');
require (
'fpdf/rotation.php');

class 
PDF extends PDF_Rotate
{
function 
Header()
{
    
//Poner Marca de Agua
    
$this->SetFont('Arial','B',80);
    
$this->SetTextColor(255,192,203);
    
$this->RotatedText(30,190,'R e p r o b a d o',45);
}

function 
RotatedText($x,$y,$txt,$angle)
{
    
//Text rotated around its origin
    
$this->Rotate($angle,$x,$y);
    
$this->Text($x,$y,$txt);
    
$this->Rotate(0);
}
}


    

$pdf=new PDF('P','mm','Letter');
$pdf->Open();
$pdf->AddPage();


//Conectar a la Base de Datos
mysql_connect('localhost','root','');
mysql_select_db('rrhh');


// Colocar Imagen que se encuentra en img/gob.jpg



// Hago la Consulta  a la BD Viativos para que se puedan imprimir los datos
$sql "select id,nombre,rut,cargo,unidad,grado,jefedirecto,cargojefedirecto,jefeautoriza,cargojefeautoriza,fechinicio,fechtermino,diascometido,region,comuna,motivocometido,traslado,pernoctacion,pasaje,valor,diastotales,viaticodiario,viaticodiarioparcial,totaldiario,totalparcial,totalsinpasaje,total,detalle,diferencia from Viaticos WHERE id = '{$_GET['id']}'";
$sql2=mysql_query($sql);

While (
$row=mysql_fetch_array($sql2)){






/*******TEXTO*********/

$pdf->SetFont('Arial','',9);
$pdf->Ln(2);
$pdf->Cell(180,4,'RESOLUCIÓN EXENTA Nº :    '.$resolucion,0,0,'R');
$pdf->Cell(-60);
$pdf->SetFont('Arial','',12);
$pdf->Ln(10);
$pdf->Cell(0,4,''.$titulo,0,1,'C');
$pdf->Cell(-60);

$pdf->SetFont('Arial','',9);
$pdf->Ln(4);
$pdf->Cell(20,5,' SECCION ',1,1,'L');
$pdf->Cell(74);
$pdf->Ln(-5);
$pdf->Cell(144,5,''.$row[1],1,1,'C');
$pdf->Cell(74);
$pdf->Ln(-5);
$pdf->Cell(164,5,''.$titular,1,1,'R');
$pdf->Cell(74);
$pdf->Ln(-5);
$pdf->Cell(190,5,''.$row[2],1,1,'R');

$pdf->Cell(20,5,'1',1,1,'C');
$pdf->Cell(20);
$pdf->Ln(-5);
$pdf->Cell(144,5,'APELLIDOS Y NOMBRES',1,1,'C');
$pdf->Cell(20);
$pdf->Ln(-5);
$pdf->Cell(164,5,'CALIDAD',1,1,'R');
$pdf->Cell(20);
$pdf->Ln(-5);
$pdf->Cell(190,5,'RUN Nº',1,1,'R');


$pdf->Cell(20,5,'SECCION',1,1,'C');
$pdf->Cell(10);
$pdf->Ln(-5);
$pdf->Cell(144,5,'GRADO',1,1,'R');
$pdf->Cell(10);
$pdf->Ln(-5);
$pdf->Cell(124,5,'CARGO :         '.$row[3],1,1,'C');
$pdf->Cell(10);
$pdf->Ln(-5);

$pdf->Cell(164,5,'CAT . : ' ,1,1,'R');
$pdf->Cell(10);
$pdf->Ln(-5);
$pdf->Cell(190,5,'HRS. ',1,1,'R');
$pdf->Cell(10);
$pdf->Ln(0);






$pdf->Cell(20,5,'2',1,1,'C');
$pdf->Cell(2);
$pdf->Ln(-5);
$pdf->Cell(124,5,'',1,1,'C');
$pdf->Cell(2);
$pdf->Ln(-5);
$pdf->Cell(144,5,''.$row[5],1,1,'R');
$pdf->Cell(2);
$pdf->Ln(-5);
$pdf->Cell(164,5,'',1,1,'R');
$pdf->Cell(2);
$pdf->Ln(-5);
$pdf->Cell(190,5,'',1,1,'R');


$pdf->Cell(20,5,'SECCION',1,1,'C');
$pdf->Cell(2);
$pdf->Ln(-5);
$pdf->SetFont('Arial','B',8);
$pdf->Cell(124,5,'ESTABLECIMIENTO : SERVICIO DE SALUD COQUIMBO',1,1,'C');
$pdf->Ln(-5);
$pdf->SetFont('Arial','',9);
$pdf->Cell(190,5,'UNIDAD O SERVICIO',1,1,'R');





$pdf->Cell(20,5,'3',1,1,'C');
$pdf->Cell(2);
$pdf->Ln(-5);
$pdf->Cell(190,5,''.$row[4],1,1,'R');




$pdf->Cell(20,5,'SECCION',1,1,'C');
$pdf->Cell(2);
$pdf->Ln(-5);
$pdf->Cell(104,5,'LUGAR DEL COMETIDO',1,1,'C');
$pdf->Ln(-5);
$pdf->Cell(124,5,'DIAS',1,1,'R');
$pdf->Ln(-5);
$pdf->Cell(190,5,'MOTIVO',1,1,'R');


$pdf->Cell(20,5,'4',1,1,'C');
$pdf->Cell(2);
$pdf->Ln(-5);
$pdf->Cell(104,5,''.$row[14],1,1,'C');
$pdf->Ln(-5);
$pdf->Cell(124,5,''.$row[12],1,1,'R');
$pdf->Ln(-5);
$pdf->SetFont('Arial','',7);
$pdf->Cell(190,5,''.$row[15],1,1,'R');


$pdf->SetFont('Arial','',9);
$pdf->Cell(20,10,'SECCION 5',1,1,'C');
$pdf->Cell(2);
$pdf->Ln(-10);
$pdf->Cell(190,10,'PERNOCTA FUERA DEL LUGAR DE RESIDENCIA : '.$row[16],1,1,'C');



$pdf->Cell(20,10,'SECCION 6',1,1,'C');
$pdf->Cell(2);
$pdf->Ln(-10);
$pdf->Cell(190,10,'DERECHO A PASAJE :   '.$row[18],1,1,'C');


$pdf->Cell(20,10,'SECCIÓN 7',1,1,'C');
$pdf->Cell(2);
$pdf->Ln(-10);
$pdf->SetFont('Arial','',9);
$pdf->Cell(124,10,'DETALLE DE PASAJES :  ',0,1,'C');
$pdf->SetFont('Arial','',7);
$pdf->Ln(-10);
$pdf->Cell(190,10,''.$row[27],1,1,'R');

$pdf->SetFont('Arial','',9);
$pdf->Cell(20,5,'SECCION',1,1,'C');
$pdf->Cell(2);
$pdf->Ln(-5);
$pdf->Cell(104,5,'TOTAL DE DIAS DEL COMETIDO FUNCIONAL : ',0,1,'R');
$pdf->Ln(-5);
$pdf->Cell(144,5,'DESDE',1,1,'R');
$pdf->Ln(-5);
$pdf->Cell(190,5,'HASTA',1,1,'R');

$pdf->Cell(20,5,'8',1,1,'C');
$pdf->Cell(2);
$pdf->Ln(-5);
$pdf->Cell(144,5,''.$row[10],1,1,'R');
$pdf->Ln(-5);
$pdf->Cell(190,5,''.$row[11],1,1,'R');




function 
fecha()
$mes date("n"); $mesArray = array( => "Enero"=> "Febrero"=> "Marzo"=> "Abril"=> "Mayo"=> "Junio"=> "Julio"=> "Agosto"=> "Septiembre"10 => "Octubre"11 => "Noviembre"12 => "Diciembre" ); $semana date("D"); $semanaArray = array( "Mon" => "Lunes""Tue" => "Martes""Wed" => "Miercoles""Thu" => "Jueves""Fri" => "Viernes""Sat" => "Sábado""Sun" => "Domingo", ); $mesReturn $mesArray[$mes]; $semanaReturn $semanaArray[$semana]; $dia date("d"); $año date ("Y"); return $semanaReturn." ".$dia." de ".$mesReturn." de ".$año; }

$h fecha();

$pdf->Cell(20,10,'FECHA : La Serena, '.$h,0,1,'L');
$pdf->Cell(2);
$pdf->Ln(-10);
$pdf->Cell(112,10,'ANOTESE',0,1,'R');

$pdf->Cell(20,5,'NOMBRE : '.$row[6],0,1,'L');
$pdf->Cell(2);
$pdf->Ln(-5);
$pdf->Cell(161,5,'NOMBRE : '.$row[8],0,1,'R');

$pdf->Cell(20,5,'CARGO : ',0,1,'L');
$pdf->Cell(2);
$pdf->Ln(-5);
$pdf->SetFont('Arial','',7.5);
$pdf->Cell(112,5,''.$row[7],0,1,'C');
$pdf->Ln(-5);
$pdf->SetFont('Arial','',9);
$pdf->Cell(114,5,'CARGO : ',0,1,'R');
$pdf->Ln(-5);
$pdf->SetFont('Arial','',7.5);
$pdf->Cell(186,5,''.$row[9],0,1,'R');


$pdf->SetFont('Arial','',9);
$pdf->Cell(40,10,'1. VIATICO DIARIO',0,1,'L');
$pdf->Cell(2);
$pdf->Ln(-10);
$pdf->Cell(84,10,'$   '.number_format($row[21],0,",","."),0,1,'C');
$pdf->Ln(-10);
$pdf->Cell(104,10,'POR',0,1,'R');
$pdf->Ln(-10);
$pdf->Cell(124,10,''.$row[20],0,1,'R');
$pdf->Ln(-10);
$pdf->Cell(144,10,'DIAS, SON',0,1,'R');
$pdf->Ln(-10);
$pdf->Cell(190,10,'$ '.number_format($row[23],0,",","."),1,1,'R');

$pdf->Cell(40,10,'2. VIATICO PARCIAL',0,1,'L');
$pdf->Cell(2);
$pdf->Ln(-10);
$pdf->Cell(84,10,'$   '.number_format($row[22],0,",","."),0,1,'C');
$pdf->Ln(-10);
$pdf->Cell(104,10,'POR',0,1,'R');
$pdf->Ln(-10);
$pdf->Cell(124,10,''.$row[28],0,1,'R');
$pdf->Ln(-10);
$pdf->Cell(144,10,'DIAS, SON',0,1,'R');
$pdf->Ln(-10);
$pdf->Cell(190,10,'$ '.number_format($row[24],0,",","."),1,1,'R');

$pdf->Cell(40,10,'3. VALOR DEL PASAJE',0,1,'L');
$pdf->Cell(2);
$pdf->Ln(-10);
$pdf->Cell(144,10,'SON',0,1,'R');
$pdf->Ln(-10);
$pdf->Cell(190,10,'$ '.number_format($row[19],0,",","."),1,1,'R');


$pdf->Cell(40,10,'4. ITEM',0,1,'L');
$pdf->Cell(2);
$pdf->Ln(-10);
$pdf->Cell(124,10,'TOTAL A PAGAR',0,1,'R');
$pdf->Ln(-10);
$pdf->Cell(190,10,'$ '.number_format($row[26],0,",","."),1,1,'R');


$pdf->Cell(40,10,'5. VºBº OFICIAL PRESUPUESTOS ',0,1,'L');
$pdf->Cell(2);
$pdf->Ln(-10);
$pdf->Cell(124,10,'COMPROMISO Nº',0,1,'R');
$pdf->Ln(-10);
$pdf->Cell(190,10,' ',1,1,'R');

$pdf->Ln(3);
$pdf->Cell(20,3,'NOTA : EL CUMPLIMIENTO DE ESTE COMETIDO, ES RESPONSABILIDAD DEL JEFE DIRECTO, SOLIDARIAMENTE ',0,1,'L');
$pdf->Cell(2);
$pdf->Ln(3);


$pdf->Cell(20,3,'CON LA PERSONA QUE DISPONGA EL PAGO',0,1,'L');

$pdf->Ln(15);
$pdf->Cell(60,4,''.$row[1],0,0,'C');
$pdf->Cell(180,4,''.$row[8],0,0,'C');

$pdf->Ln(12);
$pdf->Cell(140,4,'VºBº Jefe Directo',0,0,'C');
$pdf->Ln(3);
$pdf->Cell(140,4,'Nombre:',0,0,'C');
$pdf->Ln(0);
$pdf->Cell(210,4,''.$row[6],0,0,'C');
$pdf->Ln(3);
$pdf->Cell(140,4,'Cargo:',0,0,'C');
$pdf->Ln(0);
$pdf->Cell(250,4,''.$row[7],0,0,'C');




}
/*****LINEAS******/


$pdf->Line(20045.518645.5);// RESOLUCION EXENTA Nº
$pdf->Line(12,236.5,70,236.5);//row[1]Firma Funcionario
$pdf->Line(130,236.5,190,236.5);//row[6]Firma Jefe Autoriza




$pdf->Output();
?>
Espero sus consejos, no es algo grave. Tampoco algo esencial. Pero, me gustaría saber algún consejo o si no hay forma de bloquearlo q cualquier usuario.... de antemano gracias
  #2 (permalink)  
Antiguo 06/03/2008, 09:10
Avatar de zick  
Fecha de Ingreso: mayo-2007
Ubicación: Los Angeles - Chile
Mensajes: 168
Antigüedad: 16 años, 10 meses
Puntos: 2
Re: Bloquear un acceso a un PDF CREADO POR FPDF

y que tal si pasas las variables por post.. asi obligas a que los datos pasen por un formulario creado por ti..
es mi humiRde Opinion
  #3 (permalink)  
Antiguo 06/03/2008, 09:14
Avatar de zick  
Fecha de Ingreso: mayo-2007
Ubicación: Los Angeles - Chile
Mensajes: 168
Antigüedad: 16 años, 10 meses
Puntos: 2
Re: Bloquear un acceso a un PDF CREADO POR FPDF

O ya lo otro sería que lo bloquearas por sesion.. si estan en la sesion, ningun problema, si no. chao..

Código PHP:
if (!isset($_SESSION)) {
  
session_start();
}
$MM_authorizedUsers "";
$MM_donotCheckaccess "true";

// *** Restrict Access To Page: Grant or deny access to this page
function isAuthorized($strUsers$strGroups$UserName$UserGroup) { 
  
// For security, start by assuming the visitor is NOT authorized. 
  
$isValid False

  
// When a visitor has logged into this site, the Session variable MM_Username set equal to their username. 
  // Therefore, we know that a user is NOT logged in if that Session variable is blank. 
  
if (!empty($UserName)) { 
    
// Besides being logged in, you may restrict access to only certain users based on an ID established when they login. 
    // Parse the strings into arrays. 
    
$arrUsers Explode(","$strUsers); 
    
$arrGroups Explode(","$strGroups); 
    if (
in_array($UserName$arrUsers)) { 
      
$isValid true
    } 
    
// Or, you may restrict access to only certain users based on their username. 
    
if (in_array($UserGroup$arrGroups)) { 
      
$isValid true
    } 
    if ((
$strUsers == "") && true) { 
      
$isValid true
    } 
  } 
  return 
$isValid
}

$MM_restrictGoTo "index.php?error=acceso";
if (!((isset(
$_SESSION['MM_Username'])) && (isAuthorized("",$MM_authorizedUsers$_SESSION['MM_Username'], $_SESSION['MM_UserGroup'])))) {   
  
$MM_qsChar "?";
  
$MM_referrer $_SERVER['PHP_SELF'];
  if (
strpos($MM_restrictGoTo"?")) $MM_qsChar "&";
  if (isset(
$QUERY_STRING) && strlen($QUERY_STRING) > 0
  
$MM_referrer .= "?" $QUERY_STRING;
  
$MM_restrictGoTo $MM_restrictGoTo$MM_qsChar "accesscheck=" urlencode($MM_referrer);
  
header("Location: "$MM_restrictGoTo); 
  exit;

(Extracto de Código generado por DW)
  #4 (permalink)  
Antiguo 06/03/2008, 09:20
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: Bloquear un acceso a un PDF CREADO POR FPDF

Si usas sesiones para controlar a tus usuarios, solo verifica que el id de la sesión sea valido y que el id del usuario sea igual al del que contiene el pdf, si no lo son le impides mostrar en pantalla el pdf.

Si no usas sesiones, no podrás entonces bloquear el archivo.

Saludos.
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:40.