Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di M4RCOS
    Registrato dal
    Nov 2005
    Messaggi
    11

    [PHP] Sessioni: problema Login

    Innanzitutto, salve..
    Il mio problema riguarda l'accesso ad un area riservata, con dovuti campi nick e password.
    Solo gli utenti registrati, quindi con i precedenti dati salvati su db,possono accedervi.
    Lo schema è il seguente:

    * index.php:
    - inserimento utente e psw;
    - passaggio valori inseriti, tramite POST, a login.php;

    * login.php:
    - recupero variabili;
    - controllo dati utente con i dati sul db;
    - se ok, avvia la sessione e salva i valori utente, ruolo, cartella_utente;
    - reindirizzamento a main.php;

    * main.php:
    - controllo variabili di sessione, se impostate visualizza il contenuto della pagina, altrimenti nulla;

    il mio problema è che le variabili di sessione non vengono salvate al primo login, in quanto sul main.php, viene visualizzata una pagina bianca; ma se inserisco una seconda volta utente e password, tutto funziona correttamente.

    Posto il codice:
    login.php
    Codice PHP:
    .
    .
    .
    if(
    $log_user==$row['utente'] && $log_password==$row['password']){
            
    session_start();
            
            
    $utente=$row['utente'];
            
    $ruolo=$row['ruolo'];
            
    $cartella_utente=$row['cartella_utente'];
            
    session_register("utente");
            
    session_register("ruolo");
            
    session_register("cartella_utente");
            
    $_SESSION['utente']=$row['utente'];
            
    $_SESSION['ruolo']=$row['ruolo'];
                 
    $_SESSION['cartella_utente']= $row['cartella_utente'];
            
    $last=time();
            
    $query = ("UPDATE configuration SET ultimo_accesso='$last' WHERE utente='$log_user'");
            
            
    $update mysql_query($query$db);
            
            
    header ("Location: ".$path."main.php");
            exit;
        } 
    mentre nel main.php
    Codice PHP:
    <?
    session_start
    ();
    $utente $_SESSION['utente'];
    $ruolo $_SESSION['ruolo'];
    $cartella_utente=$_SESSION['cartella_utente'];

    if(isset(
    $_SESSION['utente'])){
    //visualizza pagina
    }
    Dov'è che sbaglio?
    M4RCOS

  2. #2
    sarebbe meglio settare in cookie in questo semplice modo...

    Codice PHP:
    session_register("verified_user");
    setcookie("user_id"$nick0$cookie_path$cookie_host); 
    e richiamare la sessione in ogni pagina

    Codice PHP:
    <?php
    session_start
    ();
    if (
    $verified_user == ''header("Location: ");
    session_register("verified_user");
    ?>
    http://codecanyon.net/category/all?ref=Manuelandro
    And I bet she told a million people that she'd stay in touch, Well all the little promises they dont mean much,When theres
    memories to be made

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    1,141
    sarebbe meglio così:

    Codice PHP:
    <?php
    session_start
    ();
    if (
    $_SESSION['verified_user'] == ''
    ....
    ?>
    ciao

  4. #4
    Utente di HTML.it L'avatar di M4RCOS
    Registrato dal
    Nov 2005
    Messaggi
    11
    Scusate l'ignoranza, ma cosa mi significa

    <?php
    session_start();
    if ($_SESSION['verified_user'] == '')
    ....
    ?>
    Cosa mi rappresentano i due apici dopo l'uguale? Non dovrebbero contenere qualche valore?
    In ogni caso, non mi sembra molto conveniente fare un controllo di confronto tra la variabile di sessione ed un qualcosa ogni volta che viene chiamata una pagina, oltretutto quel qualcosa dovrebbe essere uno degli utenti salvati su db; e se posso evitarmi di effettuare una query ogni volta che cambio pagina..

    La mia logica è che se l'utente effettua il login, i dati vengano salvati nella sessione attiva, e ad ogni pagina che viene visitata c'è un semplice controllo sulle variabili di sessione. Se non c'è la variabile, non hai fatto il login, e di conseguenza non visualizzi la pagina.
    Codice PHP:
    if(isset($_SESSION['utente')){
    //allora visualizza la pagina
    }
    //altrimenti niente 
    Per quanto riguarda i cookie, li avevo scartati per evitare problemi con utenti che x scelta li avessero disattivati...
    M4RCOS

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    1,141
    Originariamente inviato da ken84
    sarebbe meglio così:

    Codice PHP:
    <?php
    session_start
    ();
    if (
    $_SESSION['verified_user'] == ''
    ....
    ?>
    ciao
    ops,ti chiedo scusa per il pezzo di codice che ti ho postato sopra, avevo visto quello postato da manuelandro senza guardare il codice sopra ...sorry...

    CMQ penso vada bene come fai tu per controllare la sessione

    Per quanto riguarda il tuo problema, ossai il fatto che non ti setta le sessione quando fai il login, dato che il settaggio lo fai in questo if:
    Codice PHP:
    if($log_user==$row['utente'] && $log_password==$row['password']){ 
    session_start(); //questo va all'inizio
    //......

    metti session_start() come prima istruzione, poi controlla che i valori di $row['utente'] e $row['password'] che siano quelli che ti aspetti, altrimenti è corretto che non entri nell'if e che nno ti setti le variabili di sessione...

    ciao

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 © 2024 vBulletin Solutions, Inc. All rights reserved.