Mi chiedo, caro Alberto, se questo antifascismo rabbioso che viene sfogato nelle piazze oggi a fascismo finito, non sia in fondo un’arma di distrazione che la classe dominante usa su studenti e lavoratori per vincolare il dissenso.
Spostato file nella dir principale però adesso non trova il file nella cartella disegni, o meglio, non riesce ad aprirlo.
Questo lo script.
<?php
session_start();
if(!isset($_SESSION['nomeutente'])){
eccetera
exit();
}
{
$nome_file = $_GET['id'];
$percorso_assoluto="http://www.miosito.it/disegni/";
header("Content-Type: application/pdf");
header("Content-Disposition: inline; filename=".$nome_file);
readfile($percorso_assoluto.$nome_file);
}
?>
Ultima modifica di Max Della Pena; 26-08-2016 a 17:53
Mi chiedo, caro Alberto, se questo antifascismo rabbioso che viene sfogato nelle piazze oggi a fascismo finito, non sia in fondo un’arma di distrazione che la classe dominante usa su studenti e lavoratori per vincolare il dissenso.
Come ti ho detto se usi http:// la readfile usa il wrapper http per leggere il file. Questo comporta il passaggio attraverso il webserver. Se nella cartella c'è l'htaccess che ti blocca la richiesta, allora non te lo legge.
Se provi a commentare i due header(), dovresti avere un errore sul fatto che non hai i permessi per leggere il file.
Devi leggere il pdf via filesystem.
Puoi usare anche un path relativo (nel tuo caso non dovrebbero esserci problemi)
se hai messo lo script php e la cartella disegni nella directory principale:
Codice PHP:
...
$nome_file = $_GET['id'];
$percorso_assoluto="disegni/";
header("Content-Type: application/pdf");
header("Content-Disposition: inline; filename=".$nome_file);
readfile($percorso_assoluto.$nome_file);
Con il path relativo è tutto OK grazie per la pazienza.
Mi chiedo, caro Alberto, se questo antifascismo rabbioso che viene sfogato nelle piazze oggi a fascismo finito, non sia in fondo un’arma di distrazione che la classe dominante usa su studenti e lavoratori per vincolare il dissenso.
Giusto per completezza, ricordati di "filtrare"l'input. Se sai che i tuoi utente sono fidati, allora puoi lasciare così altrimenti devi fare dei controlli sul nome del file che ricevi. Questo perchè php valuta i . e i .. per risalire la directory. Se non sbaglio tu fai
Un utente potrebbe aprire il link passando un id in modo da leggere file che non dovrebbe. es:codice:<a href='http://www.miosoto.it/disegni/visualizza.php?id=<? echo "$row[disegno].pdf";?>'
e quindi la tua readfile diventerebbecodice:<a href='http://www.miosoto.it/disegni/visualizza.php?id=../config.php'
E quindi leggerebbe un ipotetico config.php che si trova nella directory principale, dove magari hai le password per il db.Codice PHP:
readfile('disegni/../config,php');
Ovviamente sarebbe un "attacco alla cieca", ma io metterei dei controlli per esser sicuro.
Una cosa molto semplice sarebbe quella di fare un replace di '../' con null su $nome_file:
Codice PHP:
$nome_file = str_replace('../', '', $_GET['id']);