Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    1,085

    .htaccess + .htpasswd .. validare da PHP

    Ciao ..
    ho inserito nella cartella dei documenti un file '.htaccess' + '.htpasswd' per far si che i file in essa contenuti non possano essere aperti tramite il percorso digitato nell'url ..
    Quindi attualmente quando cerco di accedere a tale cartella mi viene richiesta utenza e password .. fin qua tutto bene. :-)
    Il quesito sarebbe il seguente:
    visto che la validazione (utenza + passwd) mi viene richiesta anche quando arrivo dalla mia procedura .. ci sare modo di far gestire (validare) l'accesso alla cartella in questione dal PHP ?
    (evitare quindi che un utente che ha già fatto l'accesso alla procedura, non debba fare un ulteriore login per vedere i file in questione).
    Grazie mille


  2. #2
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    La cosa più semplice è quella di far gestire tutto da php. Fermo restando il .htpasswd (oppure negare l'accesso a tutti da htaccess) per impedire l'accesso diretto, dovresti fare due pagine:

    1. La lista dei file della cartella
    2. Il download del file

    In tutti e due i gli script, prima verifichi se l'utente è autorizzato, poi procedi con la lista dei file o il download.
    Per fare il download puoi usare la readfile()
    es:
    Codice PHP:
    <?php
    if(non_sono_autorizzato){
        
    header('Location: login.php');
        exit();
    }
    $file = @$_GET['name'];
    // Eventuali controlli sul file richiesto

    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($file));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Pragma: public');
    header('Content-Length: ' filesize(path_assoluto_del_file));
    readfile(path_assoluto_del_file);
    exit();
    ?>
    Ultima modifica di boots; 03-11-2013 a 15:10

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    1,085
    scusa .. ma non ho proprio capito il concetto .. :-(
    fermo restante l'accesso diretto, dove rimane inalterata la richiesta di password .. com'è che dovrebbe gestire il tutto PHP ?
    Grazie

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    1,085
    chissà stò articolo dove sarà andato a finire .. :-(
    http://forum.html.it/forum/showthrea...t=htpasswd+php

  5. #5
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Sinceramente, non so se è possibile "scavalcare" la protezione cartella del webserver da php...per questioni di sicurezza io direi di no.
    Magari qualcuno può smentirmi, sarei curioso anche io di capire come fare.

    Quello che ti ho proposto è una soluzione alternativa. Vedo di spiegarla meglio:

    1. La cartella ed i file li proteggi con htaccess, negando a tutti l'accesso.
    In questo modo scrivendo sul browser direttamente l'url del file non puoi scaricare nulla.
    2. Visto che i file non sono più accessibili direttamente, ti serve uno script php che ti vada a prelevare il file per farlo scaricare a chi è autorizzato. Quindi se prima il link al file era:
    www.miosito.it/files/pippo.pdf
    Adesso diventa
    www.miosito.it/download.php?name=pippo.pdf
    Lo script che ti ho postato prima dovrebbe farti scaricare il file, andandolo a prendere nella cartella protetta
    (la readfile() lavora da filesystem, quindi non importa del htaccess)
    Inoltre, visto che stai usando php, prima di far scaricare il file puoi fare tutti i controlli che vuoi.

    Tutto questo vale anche se vuoi listare il contenuto della cartella

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    1,085
    ma io i file non li devo far scaricare .. ma farli vedere (per la maggior parte sono immagini)

  7. #7
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    La cosa non cambia di molto. Dovrai fare uno script, come quello del download, che ti restituisce l'immagine.
    Ad esempio:
    Codice PHP:
    // image.php
    if(non_autorizzato){
       
    $img $path.'notAuthorized.jpg';
    }else{
       
    $img $path.$_GET['name'];
    }

    header('Content-Type: image/jpg'); // Ci devi mettere il MIME giusto dell'immagine
    header('Content-Length: ' filesize($img));
    readfile($img); 
    Per visualizzare l'immagine, nella tua pagina basta fare:
    <img src="image.php?name=pippo.jpg">

    Se non sei autorizzato ti verrà mostrata un'immagine di default (notAuthorized.jpg), altrimenti l'immagine richiesta.

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    1,085
    scusa se insisto .. ma attualmente con un semplice link mi vengono aperti automaticamente i più svariati tipi di file senza diventar matto .. :-)
    basterebbe solo bypassare quel caspita di autorizzazione .. :-(
    mi sembra impossibile che non ci sia il sistema

  9. #9
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Guarda, il solo altro sistema che conosco è quello di mettere username&password della cartella nel link. Ma non è certo la cosa più sicura del mondo.
    <a href="http://username: password@www.miosito.it/cartella_protetta">file</a>
    (non ci va lo spazio tra : e password...mi usciva una faccina)

    altro non credo sia possibile
    Ultima modifica di boots; 05-11-2013 a 10:17

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    1,085
    Bè .. intanto grazie per le risposte ..
    sei l'unico che risponde !! :-)

    certo che sarei curioso di saper cosa c'era in quest'articolo .. :-(

    http://forum.html.it/forum/showthrea...t=htpasswd+php

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.