Visualizzazione risultati 1 fino 5 di 5

Discussione: [$_SESSION] session_start();

  1. #1
    Guest

    Unhappy [$_SESSION] session_start();

    Salve gente

    Ho programmato tutta la notte con molte soddisfazioni (stranamente risultava tutto subito ) ma ecco che qualcosa va storto.

    Nel mio database ho una tabella per gli utenti registrati con dei campi quali:
    Username
    Password
    Privilegi

    Privilegi potrà essere 1 o 0.

    Nel caso sia 1 potrà avere accesso ad una pagina di amministrazione.
    Il login e la verifica dei Privilegi la effettuo in questo modo (da premettere che è solo l'essenziale, una pagina di test):

    Codice PHP:
    <html>
    <head>
    <title>001</title>
    </head>
    <body>
    <?php
    //Connessione database
    $connect = new mysqli("localhost", "username", "password", "db");

    // verifica dell'avvenuta connessione
    if (mysqli_connect_errno()) {
    // notifica in caso di errore
    echo "Errore nella connessione!";
    // interruzione delle esecuzioni i caso di errore
    exit();

    }
    else {
    $permessi=10; // in caso di connessione attiva
    if(isset($_POST['submit'])){
    $query=("SELECT Username, Pass, Permessi FROM utenti");
    $risultato = mysqli_query($connect, $query);
    while(
    $array = mysqli_fetch_array($risultato, MYSQLI_ASSOC)){
    if(
    $array["Username"]==$_POST['username'] && $array["Pass"]==$_POST['pass']){
    $_SESSION['Username']=$_POST['username'];
    if(
    $array["Permessi"]==1) printf("Avanti");
    }
    }
    }
    }
    $connect->close();
    ?>
    <form method="post" id="modulo">
    <table>

    <tr><td valign="top"><span>Username:</span></td><td><input value="<?= $_POST['username'];?>" name="username" type="text" id="username" /></td></tr>

    <tr><td valign="top"><span>Password:</span></td><td><input value="<?= $_POST['pass'];?>" name="pass" type="password" id="pass" /></td></tr>

    <tr><td></td><td>

    <input type="submit" name="submit" id="submit" value="Invia" />
    </tr></td>
    </table>
    </form>
    </body>
    </html>
    In questo modo se l'utente che prova il login ha i permessi necessari spunta la scritta Avanti, altrimenti niente (questo funziona perfettamente, magari se avete consigli essendoci arrivato per logica a scrivere in questo modo).

    Per verificare la connessione sulle altre pagine ho visto in giro (compresi decine di post presenti su Altervista) ma l'uso di session_start() e $_SESSION non mi è ancora ben chiaro (ho letto pure la guida ufficiale php ).

    E' corretto l'uso di $_SESSION nel codice postato in precedenza?

    Nelle altre pagine, per verificare se l'utente è loggato, faccio in questo modo utilizzando session_start();:

    Codice PHP:
    <?php
    session_start
    ();
    if (isset(
    $_SESSION['Username'])) echo "Utente loggato";
    ?>
    Qualcuno sa spiegarmi bene dove sbaglio?

    Thanks..

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

    Predefinito

    Semplicemente, session_start() va usata quando usi $_SESSION.
    Quindi anche nel primo codice, devi inserire la session_start(). (prima dell'html).

    Ciao!

  3. #3
    Guest

    Predefinito

    Grazie mille come sempre di grande aiuto però se non è un problema potresti spiegarmi in modo semplice come funziona?

    Io ho letto vari post e mi sono fatto un'idea generale ma non ho capito bene il loro utilizzo perché ho visto che si parla anche di cookie nel utilizzo di session...

    Thanks..

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

    Predefinito

    Come funziona:

    Nel server c'é una tabella (tipo database) dove ci sono almeno 2 colonne: il SID e il contenuto.
    Il SID è una stringa (penso) random, sicuramente univoca. Il contenuto, è il contenuto che metti in $_SESSION.

    Il server crea un cookie nel browser (quindi lato client) contenente il SID. Leggendo questo cookie, il server associa il visitatore alla riga del "database". Quindi i dati son al sicuro salvati su server, mentre sul client c'é solo il riferimento del SID.

    Se hai voglia, puoi provare a a fare questo sistema a mano (giusto per didattica ).

    Ciao!

  5. #5
    Guest

    Predefinito

    Grazie

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Se hai voglia, puoi provare a a fare questo sistema a mano (giusto per didattica ).
    Magari quando ho un po di tempo ci provo anche se probabilmente significherà un altro post per chiedere aiuto

    Tornando un po ai problemi

    Non riesco a memorizzare il contenuto della sessione in una variabile.

    Modificando il primo codice in questo modo memorizzo anche i Permessi:

    Codice PHP:
    if($array["Permessi"]==1){ $permessi=1; printf("Avanti");}
    $_SESSION['Permessi']=$permessi;
    Nel secondo codice, quindi in un altra pagina ho provato a memorizzare il contenuto in una variabile in questo modo:

    Codice PHP:
    if (isset($_SESSION['Username']) && isset($_SESSION['Privilegi'])){ $privilegi=$_SESSION['Privilegi']; $username=$_SESSION['Username'];
    echo
    $privilegi;}
    Cosa non va?

    Thanks..

    EDIT

    Ok sono un cre**** sbagliando a scrivere il riferimento
    Ultima modifica di mathis : 21-07-2013 alle ore 14.28.13

Regole di scrittura

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