Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Proteggere (login) pagina inclusa

    Salve, ho una pagina php (index.php) che contiene diverse pagine (menu_sx.php , home.php....) vorrei proteggere tramite login una pagina inclusa in index tramite url (http://.... ?page=pagina-inclusa.php) qualcuno potrebbe propormi, anche a linee generali come procedere? Mi riferisco in particolare all' header location.. possibile soltanto se all' inizio della pagina.. ma io dovrei controllare la pagina quando viene caricata.
    Ringrazio anticipatamente

  2. #2
    Crea una pagina di login che rimanda a index.php passandogli un valore. Sulla pagina index.php fai il controllo: se il valore è stato passato includi la pagina. In questo modo accedendo direttamente alla pagina non includerà nulla.

    O in alternativa lavori che le variabili di sessione.

  3. #3
    Ecco... mi sto rendendo conto di avere un problema:
    in header ho session_start() e nella pagina di login registro un valore nella sessione:
    codice:
    $_SESSION['name'] = $name
    dove $name è il nome dell' utente loggato. Nella pagina protetta vorrei controllare il valore di $_SESSION['name'] ma non ho nessun valore.... insomma, nel passaggio di pagina perde il valore....

    Rettifica:
    Pare che il problema era dovuto al fatto che in caso di successo nel login, io effettuavo il redirect (tramite js) a http:....... , invece mettendo il redirect a ?page=..... sembra che funzioni.

    Resta però il problema della visualizzazione. Come è ora, nella pagina protetta ho:
    codice:
    if(isset($_SESSION['name'])) {
     echo '<div>... bla bla... l' intera pagina';
    } else {
     echo 'Non hai i permessi per vedere la pagina';
     exit;
    }
    e la soluzione è davvero molto brutta sia perchè mi smonta gli include successivi (in index) e sia perchè scrivere un intera pagina dentro apici non è molto funzionale

  4. #4
    ciao, per evitare di scrivere la pagina intera in apici potresti fare:
    <?
    if(isset($_SESSION['name'])) {
    //chiudi il tag php
    ?>

    <div>... bla bla... l' intera pagina</div>
    <?
    //puoi sempre aprire php per altro codice, es
    echo $variabile;
    if($vaiabile){ echo $altraVar;}
    ?>

    <div>codice html vario</div>
    <?
    } else {
    echo 'Non hai i permessi per vedere la pagina';
    exit;
    }
    ?>
    oppure puoi creare una classe sessione
    es.
    class sessione
    {
    public function sessioneUser($sessioneDati)
    {
    if($sessioneDati['name']!='il nome che vuoi') //In questo caso non si è fatto il login.
    {// opzionale apro una funzione javascript temporizzata a 3 secondi con cui esco e si riparte da dove vuoi
    echo " <script type=\"text/javascript\">
    window.setTimeout(\"esci()\", 3000);
    //-->
    </script>";
    exit('Non hai i permessi per vedere la pagina'); //e blocco l'invio di ulteriori dati.
    }
    }

    la funzione esci
    function esci()
    {
    location.href = "http://www.eccc";
    }

  5. #5
    Originariamente inviato da SalvoDiMa
    Ecco... mi sto rendendo conto di avere un problema:
    in header ho session_start() e nella pagina di login registro un valore nella sessione:
    codice:
    $_SESSION['name'] = $name
    dove $name è il nome dell' utente loggato. Nella pagina protetta vorrei controllare il valore di $_SESSION['name'] ma non ho nessun valore.... insomma, nel passaggio di pagina perde il valore....

    Rettifica:
    Pare che il problema era dovuto al fatto che in caso di successo nel login, io effettuavo il redirect (tramite js) a http:....... , invece mettendo il redirect a ?page=..... sembra che funzioni.

    Resta però il problema della visualizzazione. Come è ora, nella pagina protetta ho:
    codice:
    if(isset($_SESSION['name'])) {
     echo '<div>... bla bla... l' intera pagina';
    } else {
     echo 'Non hai i permessi per vedere la pagina';
     exit;
    }
    e la soluzione è davvero molto brutta sia perchè mi smonta gli include successivi (in index) e sia perchè scrivere un intera pagina dentro apici non è molto funzionale

    Ma nell'if puoi mettere l'include(), non devi riscrivere tutta la pagina!

    Codice PHP:
    if($_SESSION["name"])
    {
        include(
    "pagina.php");
    }

    else
    {
        print(
    "Non hai i permessi per vedere la pagina!");


  6. #6
    Ho adottato la soluzione di maxmozz. Grazie 1000 a tutti, si può chiudere.

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.