Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 28
  1. #1
    Utente di HTML.it L'avatar di Max Della Pena
    Registrato dal
    Jan 2014
    residenza
    Udine
    Messaggi
    372

    Proteggere una cartella da accessi senza autorizzazione

    In un sito dove accedo dopo essermi loggato ho la necessità di creare una cartella con dei file PDF e vorrei impedire a chiunque di accedervi senza autorizzazione.

    Praticamente vorrei evitare che qualcuno digitando il nome di un file presente nella cartella ne trovasse il link ed accedesse a tutti gli altri file.

    E' possibile?

    Se non è inerente a PHP prego spostare, grazie.
    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.

  2. #2
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Dovresti mettere i tuoi file fuori dalla webroot del server oppure impedirne l'accesso via .htaccess.

    Per quanto riguarda php, devi fare una cosa del genere:

    Codice PHP:
    if($logged){
       
    $dir 'path_possibilmente_assoluto_alla_cartella/';
       
    $filename $_GET['file']; // es. pippo. In questo caso dovresti cmq filtrare l'input. oppure ti appoggi al db.
       
    $file $dir.$filename.'.pdf';
       if(
    file_exists($file)){
          
    header('Content-Type: application/octet-stream');
          
    header('Content-disposition: attachment; filename="' $filename '.pdf"'); 
          
    readfile($file);
          
    // Ricorda che non ci devono essere altri output prima e dopo queste istruzioni
       
    }else{
          
    // file non trovato
       
    }

    }else{
        
    // Accesso non consentito

    volendo scaricare il file pippo.pdf, dovresti richiamare lo script così:
    download.php?file=pippo
    Ultima modifica di boots; 15-08-2016 a 00:50

  3. #3
    Utente di HTML.it L'avatar di Max Della Pena
    Registrato dal
    Jan 2014
    residenza
    Udine
    Messaggi
    372
    Grazie, mi ci metto appena ho un attimo.
    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.

  4. #4
    Utente di HTML.it L'avatar di Max Della Pena
    Registrato dal
    Jan 2014
    residenza
    Udine
    Messaggi
    372
    Ciao.

    A me servirebbe poter vedere tutto quanto c'è in una determinata cartella, senza dovermi appoggiare ad un DB, semplicemente saltando .htaccess utilizzando PHP per vedere se dispongo delle autorizzazioni.

    E' possibile?

    O devo creare un DB che mi mostri tutti i files contenuti per poi visualizzarli?
    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.

  5. #5
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Ovviamente con il database è più semplce perchè passi allo script per il download l'id della riga dove poi vai a prendere il path del file. Senza devi passargli il nome del file, con conseguenti operazioni extra (filtrare il nome del file e/o codificare il nome del file se contiene caratteri speciali).

    Se non hai sotto-cartelle puoi fare una cosa del genere:

    lista dei file:

    Codice PHP:

    $dir 
    'path_possibilmente_assoluto_alla_cartella/*.pdf'// solo i pdf

    foreach(glob($dir) as $file) {
            
    $fname basename($file);
            
    // $fname = urlencode($fname); Nel caso hai nomi dei file con carattei speciali. Ricordati di usare urldecode() quando lo vai a riprendere
            
    echo '<a href="download.php?name='.$fname.'" >'.$fname.'</a><br/>';
        } 
    Lo script per il download è lo stesso di quello che ti ho postato. l'unica differenza è che basename() ti restituisce anche l'estensione del file
    Ultima modifica di boots; 24-08-2016 a 05:08

  6. #6
    Utente di HTML.it L'avatar di Max Della Pena
    Registrato dal
    Jan 2014
    residenza
    Udine
    Messaggi
    372
    Allora,

    io ho già un DB che consulto e che mi rende un nome di un file.

    Potrei creare un link che mi porta alla cartella e mi fa aprire il file PDF corrispondente, la cartella è protetta con .htaccess, essendo loggato posso accedervi direttamente o devo creare un file da inserire in quella cartella che mi autorizza alla lettura?

    Grazie.
    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.

  7. #7
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Non so se ho capito bene la tua situazione

    Cmq l'autenticazione php è diversa da quella del webserver. Sono due cose a livelli diversi, avresti quindi due login (php e webserver).

    Se puoi prendere il nome file dal database (solo il nome, o anche il path ?), allora nel link metti l'id del record che contiene il nome file. Nel "download.php" fai una query sul db, riprendi il nome e ed invii il file all'utente:

    Codice PHP:
    if($logged){
      
    $id = (int)$_GET['id'];
      
    $query "SELECT nome_file FROM tabella WHERE id = $id";
      
    // verifica che viene trovato un risultato!
      
    $file // prendo il risultato della query. Dipende da che driver usi (mysql, mysqli, pdo)
       // assumo che $file contiene tutto il path   
      
    $filename basename($file);
       if(
    file_exists($file)){
          
    header('Content-Type: application/octet-stream');
          
    header('Content-disposition: attachment; filename="' $filename '"');
         
    readfile($file);// Ricorda che non ci devono essere altri output prima e dopo queste istruzioni
       
    }else{
          
    // file non trovato
       
    }
    }else{
        
    // Accesso non consentito

    Il link al download sarà, ad esempio
    codice:
    <a href="download.php?id=4" >scarica</a>
    // Ovviamente il 4 sarà sostituito dagli id presi nella tabella del db
    Ultima modifica di boots; 24-08-2016 a 10:59

  8. #8
    Utente di HTML.it L'avatar di Max Della Pena
    Registrato dal
    Jan 2014
    residenza
    Udine
    Messaggi
    372
    Intanto grazie per l'aiuto.

    Cerco di spiegarmi meglio.

    Io ho un DB che interrogo e mi rende diversi dati relativi a dei macchinari.

    Tra i dati ho anche il numero del disegno tecnico in PDF.

    Vorrei creare un link su quel numero che mi faccia accedere alla cartella disegni e mi consenta di visualizzare il disegno corrispondente.

    Il file download credo debba servire per farmi accedere alla cartella in quanto loggato ma non serve che interroghi il DB, penso che posso fassare direttamente il nome del file aggiungendo l'estensione .PDF
    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.

  9. #9
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Giusto per capirci, il numero del disegno del particolare corrisponde al nome del file in una directory?

    es:
    database => id=32, macchinario=blabla, ... , numero_disegno_tecnico = macchinario_dis_tec_1
    filesystem => in_qualche_cartella_del_server/macchinario_dis_tec_1.pdf

    Ci possono essere delle omonimie?

  10. #10
    Utente di HTML.it L'avatar di Max Della Pena
    Registrato dal
    Jan 2014
    residenza
    Udine
    Messaggi
    372
    Allora, io passo il nome del disegno al file visualizza.php in questo modo:

    Codice PHP:
    <a href='http://www.miosoto.it/disegni/visualizza.php?id=<? echo "$row[disegno].pdf";?>' target="_blank"><?  echo "$row[disegno]"?></a>
    Mi serve solamente di poter aprire il file in una nuova finestra senza fare il download, non mi serve interrogare il DB in quanto il file con quel nome è sicuramente presente in quanto gli passo il nome dopo aver già interrogato il DB.

    Son che provo ma .htaccess mi impedisce di entrare, riesci a darmi ancora una mano?

    Grazie.
    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.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.