proteggere download dei file

simon83

Nuovo Utente
13 Mag 2014
15
0
0
Salve, sto creando un sito con area riservata in cui gli utenti registrati possono scaricare dei file.
Ho creato il form per caricare i file. Io però vorrei poter proteggere l'accesso ai file, poichè ora se si conosce il link anche utenti non registrati possono scaricare i file.
Nel database non ho salvato i file, ma solamente il loro nome.
Vi posto parte del codice del database e delle pagine php

CREATE TABLE lezione
(
id int NOT NULL,
titolo varchar NOT NULL,
lezione varchar
PRIMARY KEY (id),
)

La pagina per caricare il file è questa:
PHP:
 <form method="post" action="#" id="formlezione" enctype="multipart/form-data">
					<table width="882">
                      <tr>
    <td width="383">
                    	<label for="numero">Numero</label>
							<input type="text" name="numero" id="numero" value="" /></td>
                            <td width="auto"> 
                            <h1><span class="red">Co</span><span class="orange">r</span><span class="blue">si</span></h1>
                            </td> 
                            </tr>
						<tr>
                        <td>
                       <label for="titolo">Titolo</label>
							<input type="text" name="titolo" id="titolo" value=""/>
                            </td>
                             </tr>
                            
                            
                             <tr>
    <td>                     
               			<label for="lezione">Lezione</label>
							<input type="file" name="lezione" id="lezione" />
						  
                            </td>
                            </tr>
                            
                   
                            
							 <tr>
    <td>					
						<input type="submit" name="invia" id="modifica" value="Aggiorna dati" />
                        </td>
                        </tr>
                        </table>
</form>
                
                        </p>
                
		<?php	
			
				$titolo = mysqli_real_escape_string($link, $_POST['titolo']);
				$lezione = mysqli_real_escape_string($link, $_FILES['lezione']['name']);
				
				
				move_uploaded_file($_FILES['lezione']['tmp_name'], 'upload/' .$_FILES['lezione']['name']);
							 $lezione= $_FILES['lezione']['name'];
							 
							 $invialezione = mysqli_query($link, "INSERT INTO lezione (titolo, lezione) VALUES ('$titolo', '$lezione')");
	?>


Mentre questa è la pagina per visualizzare i file caricati:
PHP:
<?php
				$query = mysqli_query($link, "SELECT * FROM lezione ");
    $quanti = mysqli_num_rows($query);	
 
    if ($quanti == 0)
    {
        echo "Nessun record!";
    }
    else
    {
        for($x=0; $x<$quanti; $x++)
        {
            $rs = mysqli_fetch_row($query);
			$id = $rs[0];
            $titolo = $rs[2];
			$lezione = $rs[4];?>
            <tr>
     <td><?php echo $titolo;?> €</td>
     <td><a href="upload/<?php echo $lezione;?>"><?php echo $lezione;?></a></td>            
            
       <?php     
		}
		}?>
In questo modo i file vengono caricati nella cartella upload e nel db viene memorizzato il nome del file; però se si conosce il percorso tutti possono accedere ai file.
Come posso fare per proteggere l'accesso?
Grazie
 

simon83

Nuovo Utente
13 Mag 2014
15
0
0
Si. c'è un controllo di sessione. Però questo è per le pagine php e non per i file che sono nella cartella upload.
Se non sei loggato non puoi accedere alla pagina dove sta il link del file da scaricare (saranno file pdf soprattutto); però se si logga e clicca sul link del file da scaricare e si salva il il link della pagina che si aprirà, successivamente potrà accedere senza doversi loggare. Spero di essermi spiegato

Nell'immagine allegata ho copiato il link nella barra degli indirizzi senza loggarmi. Vorrei evitare che succeda questo e vorrei che se scrivi il link non ti dia la possibilità di vederlo

Immagine.jpg
 

simon83

Nuovo Utente
13 Mag 2014
15
0
0
Ho risolto. Scrivo come ho fatto; può essere utile anche agl'altri...
ho sostituito il codice nel file httpd.conf di apache con il seguente codice

<Directory "C:/xampp/htdocs/iscrizioni/documenti">
AllowOverride none
#Order allow,deny
deny from all
</Directory>

dove "C:/xampp/htdocs/iscrizioni/documenti" è la cartella che vogliamo proteggere