Visualizzazione risultati 1 fino 8 di 8

Discussione: Impedire l'accesso a pagine del sito

  1. #1
    Guest

    Predefinito Impedire l'accesso a pagine del sito

    Salve a tutti, ho un piccolo problema con il mio sito.
    Ho fatto una pagina di login per accedere ad un'altra pagina in un'altra cartella, ma ho notato che al di là del login se si conosce l'indirizzo completo per quest'ultima pagina (che dovrebbe essere accessibile solo tramite il login) si può benissimo visualizzarla col browser.
    Ho utilizzato inizialmente .htaccess per impedire l'accesso, ma il risultato che ho ottenuto è quello di avere 2 autenticazioni (il mio script in php e quello di .htaccess), mentre io preferisco avere solo il mio.
    Ho letto da qualche parte che basta mettere i file all'esterno della directory root, e in questo modo ci si risparmierebbe anche l'.htaccess.
    Qualcuno sa come spostare i file fuori della directory root oppure come integrare per bene fra di loro il mio script e .htaccess???
    Grazie mille in anticipo!!!

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,148

    Predefinito

    Come è il tuo script di login? ("asterisca" le eventuali password)...

    Ciao!

  3. #3
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Ciao, puoi lasciare stare htaccess e usare le sessioni.
    puoi cercare su internet casomai ti aiuto io.
    Ciao!

    EDIT:
    scusa alemoppo ho visto dopo il tuo messaggio
    Ultima modifica di radiodelmomento : 18-08-2011 alle ore 19.29.48

  4. #4
    Guest

    Predefinito

    è davvero molto elementare:
    Codice PHP:
    <?php

    // ACQUISISCO LE VARIABILI INVIATE DAL FORM
    $user = $_POST['username'];
    $passwd = $_POST['password'];

    // CONTROLLO I DATI DEL LOGIN
    if (($user == "****") && ($passwd == "****")){
    header("location: ./pagina.html");
    } else {
    echo
    "SBAGLIATO!!!";
    }
    ?>
    Ultima modifica di alemoppo : 18-08-2011 alle ore 19.26.42 Motivo: meglio usare i tag [php] :)

  5. #5
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,148

    Predefinito

    Bene. Modificalo così:

    Codice PHP:
    <?php
    session_start
    ();
    // ACQUISISCO LE VARIABILI INVIATE DAL FORM
    $user = $_POST['username'];
    $passwd = $_POST['password'];

    // CONTROLLO I DATI DEL LOGIN
    if (($user == "****") && ($passwd == "****")){
    $_SESSION['amministrazione'] = 1;
    header("location: ./pagina.php");
    } else {
    echo
    "SBAGLIATO!!!";
    }
    ?>
    (anche se prima di usare i vari dati prelevati da $_POST, dovresti controllare la loro esistenza tramite isset()).
    Comunque, funziona anche così...


    Poi, come hai visto ho modificato l'estensione della pagina "pagina.html" in "pagina.php". All'inizio della pagina "segreta" pagina.php, scrivici:

    Codice PHP:
    <?php
    session_start
    ();
    if(!isset(
    $_SESSION['amministrazione']))
    die(
    'non puoi visualizzare questa pagina!');
    ?>
    <!-- resto della pagina "segreta" -->

  6. #6
    Guest

    Predefinito

    Grazie mille!!! ora però vorrei chiederti un'altra cosa...sulla pagina "segreta" ho un link per far scaricare un file, come faccio a fare in modo che anche conoscendo l'indirizzo completo, non sia possibile scaricarlo? (cioè è lo stesso problema che avevo per la pagina "segreta" solo che adesso è per un file da scaricare)

  7. #7
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,148

    Predefinito

    Nella stessa directory del file da scaricare, crea un file chiamato ".htaccess" (se non esiste già). Quindi, scrivici (o aggiungici):

    Codice:
    <Files ~ "file.txt$">
    Order allow,deny
    Deny from all
    Satisfy All
    </Files>
    (ovviamente, sostituisci "file.txt" con il nome del file).
    A questo punto, hai bloccato l'apertura del file da url; ma è possibile accedere da PHP. Quindi fai una pagina del genere:

    download.php
    Codice PHP:
    <?php
    session_start
    ();
    if(!isset(
    $_SESSION['amministrazione']))
    die(
    'Non puoi scaricare questo file.');
    $file = 'file.txt'; //SOSTITUISCI IL NOME
    header("Cache-Control: public");
    header("Content-Description: File Transfer");
    header("Content-Disposition: attachment; filename=".$file);
    header("Content-Transfer-Encoding: binary");
    readfile($file);
    ?>
    ..accedendo a questa pagina (download.php), inizierà il download del file (o almeno, dovrebbe).

    Ciao!
    Ultima modifica di alemoppo : 18-08-2011 alle ore 20.30.45

  8. #8
    Guest

    Predefinito

    ok!!! aggiungendo header("Content-Type: application/octet-stream"); funziona!!! grazie mille!!!

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •