// includo i file con la configurazione e con le classi require('../inc/config.php'); require('../classi/database.php'); // inzializzo l'oggetto database per le connessioni $database = new database($dati_db['host'], $dati_db['user'], $dati_db['password'], $dati_db['database'], $dati_db['persistenza']); // verifico le variabili require('../inc/sanitize.php'); $_GET = sanitize($_GET); // FILE DI OUTPUT PER IMMAGINE $id = is_numeric($_GET['id']) ? (int)$_GET['id'] : 0; if (isset($_GET['copyright'])) { $copyright = 0; } else { $copyright = 1; } if (isset($_GET['qualita'])) { $qualita = (int)$_GET['qualita']; } else { $qualita = 75; } if (isset($_GET['larghezza']) AND $_GET['larghezza'] != '' AND $_GET['larghezza'] != 'auto') { $larghezza = $_GET['larghezza']; // elimino i px dalla chiamata $larghezza=str_replace("px", "", $larghezza); } else { // se la larghezza non e' comunicata, non rigenero l'immagine $larghezza = ''; } if (isset($_GET['altezza']) AND $_GET['altezza'] != '' AND $_GET['altezza'] != 'auto') { $altezza = $_GET['altezza']; // elimino i px dalla chiamata $altezza=str_replace("px", "", $altezza); } else { // se la larghezza non e' comunicata, non rigenero l'immagine $altezza = ''; } if (isset($_GET['pdf'])) { $larghezza = '100'; } if (isset($_GET['ingrandisci']) AND $_GET['ingrandisci'] != '') { $ingrandisci = TRUE; } else { $ingrandisci = FALSE; } // prendo i dati importanti per la configurazione $sql = "SELECT * FROM ".$dati_db['prefisso']."configurazione WHERE nome='download_sicuri' OR nome='modulo_mobile' OR nome='utilizza_gd_resize' OR nome='cache_media' OR nome='utilizza_gd_copyright' OR nome='utilizza_gd_formato' OR nome='utilizza_gd_metodo' or nome='redirect_output_immagini'"; if( !($result = $database->connessioneConReturn($sql)) ) { die("non riesco a prendere le informazioni sulla configurazione in db".$sql); } while ( $riga = $database->sqlArray($result) ) { $configurazione[$riga['nome']] = $riga['valore']; } if ($_GET['nocache']) { $configurazione['cache_media'] = 0; } $sql ="SELECT tipo_file,nome_file,download_sicuro FROM ".$dati_db['prefisso']."immagini WHERE id='$id'"; if ( !($result = $database->connessioneConReturn($sql)) ) { $database->sqlChiudi(); header("HTTP/1.0 404 Not Found"); die(''); } if ($database->sqlNumRighe($result) != 0) { $dati=$database->sqlArray($result); } else { // ripeto la query per l'id di default $sql ="SELECT tipo_file,nome_file,download_sicuro FROM immagini WHERE id=0"; if ( !($result = $database->connessioneConReturn($sql)) ) { $database->sqlChiudi(); header("HTTP/1.0 404 Not Found"); die(''); } if ($database->sqlNumRighe($result) != 0) { $dati=$database->sqlArray($result); } } ///////////// CONTROLLO DOWNLOAD SICURI if ($configurazione['download_sicuri']==1 OR ($configurazione['download_sicuri']==2 and $dati['download_sicuro'])) { if (isset($_SERVER['HTTP_REFERER']) && $_SERVER['HTTP_REFERER']!="") { if (strpos($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST'])===false) { $database->sqlChiudi(); header("HTTP/1.0 404 Not Found"); die(''); } } else { $database->sqlChiudi(); header("HTTP/1.0 404 Not Found"); die(''); } } /* echo "
"; print_r($dati); echo ""; echo "
"; print_r($configurazione); echo ""; */ $nomeFile = $id."_".$larghezza."_".$altezza."_".$qualita."_".$configurazione['utilizza_gd_copyright']."_".$configurazione['utilizza_gd_formato']."_".$dati['nome_file'].".cache"; if (($larghezza != '' OR $altezza != '') AND $configurazione['utilizza_gd_resize'] AND ($configurazione['utilizza_gd_copyright'] != $id or !$id)) { ///////////DEVO VERIFICARE SE HO GIA' CREATO L'IMMAGINE if (!file_exists("../cache/media/".$nomeFile) or !$configurazione['cache_media']) { if($configurazione['utilizza_gd_metodo'] == 'classico') { ignore_user_abort(true); // CREO IL FILE CACHE /* // prendo il file originale $strImmagine = file_get_contents('../media/'.$id.'_'.$dati['nome_file']); $fileTemp = tempnam ("../temp", "IMG"); $fp = fopen($fileTemp, "w"); fwrite($fp, $strImmagine); fclose($fp); */ // creo l'immagine, e prendo le sue misure originali if ($dati['tipo_file'] == 'image/jpeg' OR $dati['tipo_file'] == 'image/pjpeg') { $immagine = imagecreatefromjpeg('../media/'.$id.'_'.$dati['nome_file']); } else if($dati['tipo_file'] == 'image/gif'){ $immagine = imagecreatefromgif('../media/'.$id.'_'.$dati['nome_file']); } else if($dati['tipo_file'] == 'image/png'){ $immagine = imagecreatefrompng('../media/'.$id.'_'.$dati['nome_file']); } // cancello il file temporaneo originale //unlink($fileTemp); //$immagine = imagecreatefromstring($immagine); $larghezzaOri = imagesx($immagine); $lunghezzaOri = imagesy($immagine); $proporzioni = ($lunghezzaOri/$larghezzaOri); //echo "larghezza passata: ".$larghezza." larghezza elaborata: ".$larghezza; // verifico se ridimensionare in base all'altezza o alla larghezza if ($larghezzaOri != $larghezza or $lunghezzaOri != $altezza) { if (isset($_GET['pdf'])) { $larghezza = ''; } // creo le nuove misure in base alla larghezza inviatami $larghezza = $larghezza == '' ? $larghezzaOri : $larghezza; $altezza = $altezza == '' ? $lunghezzaOri : $altezza; // se la larghezza è come l'originale, non ricreo l'immagine if ($lunghezzaOri==$altezza) { $nuovaLarghezza = $larghezza; $nuovaLunghezza = ceil(abs($nuovaLarghezza * $proporzioni)); } else { $nuovaLunghezza = $altezza; $nuovaLarghezza = ceil(abs($nuovaLunghezza * $proporzioni)); } if ($larghezzaOri <= $nuovaLarghezza AND !$ingrandisci) { $nuovaLarghezza = $larghezzaOri; $nuovaLunghezza = $lunghezzaOri; } // ora creo una nuova immagine, e ci copio dentro la vecchia ridimensionata $nuovaImmagine = imagecreatetruecolor($nuovaLarghezza,$nuovaLunghezza); $sfondo = imagecolorallocate($nuovaImmagine, 255, 255, 255); imagefill($nuovaImmagine, 0,0, $sfondo); imagecopyresized($nuovaImmagine,$immagine,0,0,0,0,$nuovaLarghezza,$nuovaLunghezza,$larghezzaOri,$lunghezzaOri); $originale = false; } else { $nuovaImmagine = $immagine; $originale = true; } // verifico se inserire una immagine per il copyright if ($configurazione['utilizza_gd_copyright'] != 0 AND $configurazione['utilizza_gd_copyright'] != 0 AND $id != 0 AND $configurazione['utilizza_gd_copyright_tipo']!= 'photogallery') { $strImmagineCopy = file_get_contents($server_url.'moduli/output_immagine.php?id='.$configurazione['utilizza_gd_copyright']); /* $fileTempCopy = tempnam ("../temp", "IMG"); $fpc = fopen($fileTempCopy, "w"); fwrite($fpc, $strImmagineCopy); fclose($fpc); */ $immagineCopyright = imagecreatefromstring($strImmagineCopy); //$immagineCopyright = imagecreatefromgd($server_url.'moduli/output_immagine.php?copyright=0&id='.$configurazione['utilizza_gd_copyright']); imageCopyMerge($nuovaImmagine, $immagineCopyright, 0, 0, 0, 0, imageSX($immagineCopyright), imageSY($immagineCopyright), 46); //unlink($fileTempCopy); ImageDestroy($immagineCopyright); } // ATTENZIONE: CONTROLLO SE PASSARE L'IMMAGINE SENZA RIELABORAZIONE if ($originale) { if ($dati['tipo_file']=='image/jpeg') { $dati['tipo_file']='image/pjpeg'; } // invio direttamente l'immagine O il file all'header if($configurazione['header_output_immagini']) { header('HTTP/1.1 200 OK'); header('Status: 200 OK'); header('Accept-Ranges: bytes'); header('Content-Transfer-Encoding: Binary'); } //echo "non ricreo l'immagine, ma creo il file di cache...tipo: ".$dati['tipo_file']; header('Content-Type: '.$dati['tipo_file']); //header('filename='.$dati['nome_file']); @readfile("../media/".$id."_".$dati['nome_file']); } else { // ora invio l'immagine all'header if ($configurazione['utilizza_gd_formato'] == 'jpeg') { // scrivo la cache per l'immagine if ($configurazione['cache_media']) { imagejpeg($nuovaImmagine,"../cache/media/".$nomeFile,$qualita); } Header ("Content-Type: image/pjpeg"); imagejpeg($nuovaImmagine,NULL,$qualita); } else { // scrivo la cache per l'immagine if ($configurazione['cache_media']) { imagepng($nuovaImmagine,"../cache/media/".$nomeFile); } Header ("Content-Type: image/png"); imagepng($nuovaImmagine); } } ImageDestroy($immagine); ImageDestroy($nuovaImmagine); } else { ignore_user_abort(true); //Nuovo metodo SimlpeImage include_once('../classi/simple_image.php'); $image = new SimpleImage(); $image->load('../media/'.$id.'_'.$dati['nome_file']); $larghezzaOri = $image->getWidth(); $lunghezzaOri = $image->getHeight(); if ($larghezzaOri != $larghezza and $larghezza != '') { if (isset($_GET['pdf'])) { $larghezza = ''; } // creo le nuove misure in base alla larghezza inviatami $larghezza = $larghezza == '' ? $larghezzaOri : $larghezza; // se la larghezza è come l'originale, non ricreo l'immagine $nuovaLarghezza = $larghezza; if ($larghezzaOri <= $nuovaLarghezza AND !$ingrandisci) { $nuovaLarghezza = $larghezzaOri; } // ora creo una nuova immagine $image->resizeToWidth($nuovaLarghezza); $originale = false; } else if ($lunghezzaOri != $altezza and $altezza != '') { if (isset($_GET['pdf'])) { $larghezza = ''; } // creo le nuove misure in base alla larghezza inviatami $altezza = $altezza == '' ? $lunghezzaOri : $altezza; // se la larghezza è come l'originale, non ricreo l'immagine $nuovaLunghezza = $altezza; if ($lunghezzaOri <= $nuovaLunghezza AND !$ingrandisci) { $nuovaLunghezza = $lunghezzaOri; } // ora creo una nuova immagine $image->resizeToHeight($nuovaLunghezza); $originale = false; } else { $originale = true; } // verifico se inserire una immagine per il copyright if ($configurazione['utilizza_gd_copyright'] != 0 AND $configurazione['utilizza_gd_copyright'] != 0 AND $id != 0 AND $configurazione['utilizza_gd_copyright_tipo']!= 'photogallery') { $strImmagineCopy = file_get_contents($server_url.'moduli/output_immagine.php?id='.$configurazione['utilizza_gd_copyright']); $immagineCopyright = imagecreatefromstring($strImmagineCopy); $image->imageCopyMerge($immagineCopyright, 0, 0, 0, 0, imageSX($immagineCopyright), imageSY($immagineCopyright), 46); ImageDestroy($immagineCopyright); } // ATTENZIONE: CONTROLLO SE PASSARE L'IMMAGINE SENZA RIELABORAZIONE if ($originale) { if ($dati['tipo_file']=='image/jpeg') { $dati['tipo_file']='image/pjpeg'; } // invio direttamente l'immagine O il file all'header if($configurazione['header_output_immagini']) { header('HTTP/1.1 200 OK'); header('Status: 200 OK'); header('Accept-Ranges: bytes'); header('Content-Transfer-Encoding: Binary'); } //echo "non ricreo l'immagine, ma creo il file di cache...tipo: ".$dati['tipo_file']; header('Content-Type: '.$dati['tipo_file']); //header('filename='.$dati['nome_file']); @readfile("../media/".$id."_".$dati['nome_file']); } else { // ora invio l'immagine all'header if ($configurazione['utilizza_gd_formato'] == 'jpeg') { // scrivo la cache per l'immagine if ($configurazione['cache_media']) { $image->save("../cache/media/".$nomeFile, IMAGETYPE_JPEG, $qualita); } Header ("Content-Type: image/pjpeg"); $image->output(IMAGETYPE_JPEG); } else { // scrivo la cache per l'immagine if ($configurazione['cache_media']) { $image->save("../cache/media/".$nomeFile, IMAGETYPE_PNG, $qualita); } Header ("Content-Type: image/png"); $image->output(IMAGETYPE_PNG); } } } } else { // il file cache già esiste, posso usare l'immagine presente in file system if($configurazione['header_output_immagini']) { header('HTTP/1.1 200 OK'); header('Status: 200 OK'); header('Accept-Ranges: bytes'); header('Content-Transfer-Encoding: Binary'); } if ($configurazione['utilizza_gd_formato'] == 'jpeg') { Header ("Content-Type: image/pjpeg"); } else { Header ("Content-Type: image/png"); } //header('Content-Disposition: attachment; filename='.$dati['nome_file']); @readfile("../cache/media/".$nomeFile); } } else if ($configurazione['utilizza_gd_copyright'] == $id) { header('Content-Type: '.$dati['tipo_file']); //header('Content-Disposition: attachment; filename='.$dati['nome_file']); @readfile("../media/".$id."_".$dati['nome_file']); } else { if ($dati['tipo_file']=='image/jpeg') { $dati['tipo_file']='image/pjpeg'; } if($configurazione['redirect_output_immagini'] or $_GET['rel'] == 1) { header("location: ".$server_url."media/".$id."_".($dati['nome_file']));//redirect } else { ///////////////////////////NON RICREO IMMAGINE // invio direttamente l'immagine O il file all'header if($configurazione['header_output_immagini']) { header('HTTP/1.1 200 OK'); header('Status: 200 OK'); header('Accept-Ranges: bytes'); header('Content-Transfer-Encoding: Binary'); } header('Content-Disposition: attachment; filename="'.utf8_encode($dati['nome_file']).'"'); header('Content-Type: '.$dati['tipo_file']); @readfile("../media/".$id."_".utf8_encode($dati['nome_file'])); } } $database->sqlChiudi(); ?>