Originariamente inviato da _debo
In questa pagina vedo ben tre include che potrebbero potenzialmente toccare le sessioni, specialmente quella get_user.php non mi piace per niente
Ciao, grazie per l'aiuto 
Tutti e tre gli include sono presenti in ogni pagina del mio sito. Il primo è la connessione al database, non tocca minimamente le sessioni: c'è solo un mysql_connect e un mysql_select_db. Il secondo include è una funzione che converte la data dal formato inglese al formato italiano e questo è il codice della pagina:
Codice PHP:
<?
function data_it($data)
{
// Creo una array dividendo la data YYYY-MM-DD sulla base del trattino
$array = explode("-", $data);
// Riorganizzo gli elementi in stile DD/MM/YYYY
$data_it = $array[2]."/".$array[1]."/".$array[0];
// Restituisco il valore della data in formato italiano
return $data_it;
}
?>
Il terzo include invece mi serve per far vedere alcune pagine soltanto alle persone che hanno eseguito l'accesso, reindirizzando le altre alla pagina index; questo è il codice:
Codice PHP:
<?php
session_start();
session_regenerate_id(TRUE);
// Controllo accesso
if (!isset($_SESSION['user'] ))
{
header('location: index.php');
}
else
{
$user = $_SESSION['user'];
require_once 'db_connect.php';
$sql = "SELECT id, nome FROM operatori WHERE user LIKE '$user'";
$users_data = @mysql_query($sql);
if (!$users_data) {
exit ('
Non sono riuscito ad ottenere l\'operatore dal database. Contattare l\'amministratore.</p>');
}
while ($user_data = mysql_fetch_array($users_data)) {
$user_array['id'] = $user_data['id'];
$user_array['nome'] = $user_data['nome'];
}
return $user_array;
}
?>
Ho fatto delle prove e ora riesco a far funzionare tutto ripristinando manualmente la sessione con un altro problema però: devo scrivere direttamente l'user e la password dell'utente nella pagina:
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
$operatoreid = $_GET['operatore'];
// 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();
$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);
}
// Ripristino manualmente i valori della sessione
session_start();
session_regenerate_id(TRUE);
// Ricreo la sessione
$user=htmlspecialchars('admin');
$password=md5(htmlspecialchars('passwordAdmin'));
$_SESSION['user'] = $user;
$_SESSION['password'] = $password;
} else {
// Effettuo il redirect se il parametro mail è impostato in modo sbagliato
header('location:index.php');
exit;
}
?>
Se provo in qualunque modo a far partire la sessione prima del file_get_contents per salvarmi i parametri della sessione per poi riutilizzarli, mi viene generata in pdf la pagina che viene visualizzata quando non si è loggati. Altresì se uso
Codice PHP:
$userOperatore = require 'get_user.php';
prima del file_get_contents accade la stessa cosa, cioè la pagina visualizzata è quella che si visualizza se non si è fatto l'accesso. Se invece lo uso dopo la pagina in pdf è corretta ma la sessione non è ripristinata.
Non riesco a capirci più niente :confuse:
Grazie ancora per l'aiuto e scusatemi per il post chilometrico!!!