Buonasera a tutti,
ho realizzato uno script che mi permette di caricare file sul server e contemporaneamente scrive alcune informazioni (timestamp dell'upload, dimensioni del file, ecc.) in una tabellina MySQL.
Codice PHP:
<?php
if(isset($_POST['invia']))
{
//Imposto la cartella dove verranno salvati i file
$cartella = "../docs/";
$basename = basename( $_FILES['file']['name'] );
$percorso = $cartella . $basename;
chmod($cartella, 0755);
//Recupero le informazioni del Form
$titolo = $_POST['titolo'];
$sezione = $_POST['sezione'];
$file = ($_FILES['file']['name']);
// Mi connetto al Database
include('../dbconn.php');
// Controllo se ci sono stati problemi nell'upload del file
if(!isset($_FILES['file']) OR $_FILES['file']['size'] == 0 OR $_FILES['file']['error'] != UPLOAD_ERR_OK)
die("<div align=\"center\"> Non è stato scelto nessun file da caricare. <a href=\"javascript:history.go(-1)\">Riprova cliccando qui </a> </div>
");
// Controllo che il titolo non sia vuoto
if($titolo==null)
die("<div align=\"center\"> Attenzione! Non è stato inserito nessun titolo. <a href=\"javascript:history.go(-1)\">Riprova cliccando qui </a> </div>
");
// Controllo che sia stata scelta una sezione
if($sezione==XX)
die("<div align=\"center\"> Attenzione! Non è stata scelta la sezione dove caricare il materiale. <a href=\"javascript:history.go(-1)\">Riprova cliccando qui</a> </div>
");
// Controllo che il file sia un PDF
if ($_FILES['file']['type'] != "application/pdf")
die("<div align=\"center\"> Formato file non valido, è permesso solo il formato PDF. <a href=\"javascript:history.go(-1)\">Riprova cliccando qui </a> </div>
");
// Scrivo il nome del file tutto in minuscolo e tolgo gli eventuali spazi
$file = strtolower($file);
$file = str_replace(" ", "_", $file);
// Controllo che il file non sia già stato caricato
$file_esiste = mysql_query("SELECT * FROM file WHERE file = \"$file\"") or die('Query non valida: ' . mysql_error());
$righe = mysql_num_rows($file_esiste);
if ($righe!=0)
die("<div align=\"center\"> Esiste già un file con lo stesso nome. Verifica se è sia già stato effettivamente caricato o eventualmente cambia nome al file.
<a href=\"javascript:history.go(-1)\">Riprova cliccando qui </a> </div>
");
//Scrivo le informazioni recuperate nel DB
$query = "INSERT INTO file SET
titolo = '$titolo',
sezione = '$sezione',
file = '$file'";
mysql_query($query)
OR die('Query non valida: ' . mysql_error());
//Copio il file nella cartella del Server
if(move_uploaded_file($_FILES['file']['tmp_name'], $percorso))
{
// mostro un messaggio di successo
echo "<div align=\"center\"> Memorizzazione del file [b]$file[/b] eseguita correttamente.
<a href=\"pannello.php\">Clicca qui per tornare al Pannello di amministrazione </a> </div>";
}
else {
//Scrivo un messaggio d'errore se ci sono stati errori
echo "C'è stato un problema nel caricamento del file.";
}
}
?>
Di seguito ho realizzato lo script che mi permette di visualizzare i file:
Codice PHP:
<?php
include('dbconn.php');
// query per ottenere l'elenco dei files nel DB
$query = mysql_query("SELECT * FROM file") or die(mysql_error());
//Inserisco i risultati in un array
while($array = mysql_fetch_array( $query ))
{
echo "<tr> <td><a href=\"http://www.sito.it/docs/$array[file]\">$array[titolo]</a> </td> </tr>";
}
?>
Avrei però necessità di settare i permessi dei file a 444 (sola lettura). Il mio problema è: come farlo?
Vale a dire, quando mi conviene cambiare i permessi dei file: terminata la procedura di upload oppure quando sto per visualizzare il contenuto dei file? Soprattutto... COME fare?
Grazie a tutti, buona serata,
Luca