Grazie mille per la dritta!
Inserendo
Codice PHP:
$userOperatore = require 'get_user.php';
nella pagina che genera il pdf e rimuovendolo da mypage.php, rimuovendo anche i dati per il ripristino della sessione dalla pagina di generazione pdf, tutto il sistema funziona. Ecco il codice della pagina che genera i pdf:
Codice PHP:
<?php
// Mi connetto al database
require 'db_connect.php';
// Includo la libbreria dompdf
require_once("dompdf/dompdf_config.inc.php");
// Trovo l'utente loggato
$userOperatore = require 'get_user.php';
$operatoreid = $userOperatore['id'];
// Solo l'utente 1 può vedere la pagina
if ($operatoreid != 1) {
header('location: index.php');
exit();
}
// Trovo il valore dei cookie
$myCookie = $_SERVER['HTTP_COOKIE'];
// Imposto i valori della data da visualizzare,
// se nessuna data è selezionata imposta la data corrente.
// Se invece la data di inizio è > alla data di fine le inverto.
if (isset ($_GET['datainizio']) and isset ($_GET['datafine'])) {
$datainizio = $_GET['datainizio'];
$datafine = $_GET['datafine'];
// Se $datainizio > $datafine inverto i valori.
if ($datainizio > $datafine) {
$datatemp = $datainizio;
$datainizio = $datafine;
$datafine = $datatemp;
}
} else {
// Faccio il redirect
header('location:index.php');
exit;
}
// Controllo che la proprietà mail sia correttamente impostata
if (isset($_GET['mail']) AND (($_GET['mail'] == 'no') OR ($_GET['mail'] == 'yes'))){
$mailValue = $_GET['mail'];
$opts = array('http' => array('header'=> 'Cookie: ' . $myCookie ."\r\n"));
$context = stream_context_create($opts);
$contents = file_get_contents("http://localhost:8888/CassaLaboratorio/mypage.php?datainizio=$datainizio&datafine=$datafine&operatore=1", false, $context);
$html = $contents;
// Nel caso in cui si voglia far scaricare il pdf nel pc client
if ($mailValue == 'no'){
$dompdf = new DOMPDF();
$dompdf->set_paper("a4","portrait");
$dompdf->set_base_path("stylesheet");
$dompdf->load_html($html);
$dompdf->render();
//To download pdf on client computer
$dompdf->stream("sample.pdf");
}
// Nel caso si voglia salvare il pdf nel server per un successivo utilizzo
if ($mailValue =='yes'){
$dompdf = new DOMPDF();
$dompdf->set_paper("a4","portrait");
$dompdf->set_base_path("stylesheet");
$dompdf->load_html($html);
$dompdf->render();
$output = 'tmp.pdf';
$pdfoutput = $dompdf->output();
$filename = $output;
$fp = fopen($filename, "a");
fwrite($fp, $pdfoutput);
fclose($fp);
}
} else {
// Effettuo il redirect se il parametro mail è impostato in modo sbagliato
header('location:index.php');
exit;
}
?>
e questo è il codice di mypage.php
Codice PHP:
<?php
// Mi connetto al database
require 'db_connect.php';
// Importo la funzione per visualizzare la data nel formato italiamo d-m-Y
require 'dataDisplayIta.php';
// HO RIMOSSO IL CONTROLLO DELLA SESSIONE QUI
/*
// Trovo l'utente loggato
$userOperatore = require 'get_user.php';
$operatoreid = $userOperatore['id'];
$operatorenome = $userOperatore['nome'];
*/
$operatoreid = $_GET['operatore'];
// Solo l'utente 1 può vedere la pagina
if ($operatoreid != 1) {
header('location: index.php');
}
// Imposto i valori della data da visualizzare,
// se nessuna data è selezionata imposta la data corrente.
// Se invece la data di inizio è > alla data di fine le inverto.
if (isset ($_GET['datainizio']) and isset ($_GET['datafine'])) {
$datainizio = $_GET['datainizio'];
$datafine = $_GET['datafine'];
// Se $datainizio > $datafine inverto i valori.
if ($datainizio > $datafine) {
$datatemp = $datainizio;
$datainizio = $datafine;
$datafine = $datatemp;
}
} else {
$datainizio = date("Y-m-d");
$datafine = date("Y-m-d");
}
// Cambio il formato della data
$datainizioIta = data_it($datainizio);
$datafineIta = data_it($datafine);
// Imposto il titolo della pagina
if ($datafine != $datainizio){
$titolo = "Cassa dal $datainizioIta al $datafineIta";
} else {
$titolo = "Cassa del $datafineIta";
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link href="style.css" rel="stylesheet" type="text/css" media="all" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title><?php echo "$titolo"; ?></title>
</head>
<body>
<div class="body">
<?php
L'ultima cosa che mi è rimasta da fare è capire ora che ho levato l'include da mypage.php come posso fare a far visualizzare la pagina solo all'operatore 1 senza usare
Codice PHP:
$operatoreid = $_GET['operatore'];
visto che è facilmente aggirabile questo tipo di controllo da parte degli altri operatori.
Grazie mille davvero _debo per l'aiuto!