Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22

Discussione: Problema sessioni PHP

  1. #1

    Problema sessioni PHP

    Ragazzi, nel mio sito ho un problema di sessioni non indifferente (almeno per me...). Praticamente, quando uno fa il login, nella pagina di ricezione dei dati trova questo:

    Codice PHP:
    <?
    session_start
    (); //..avviamo la sessione...
    $username_post=mysql_escape_string($_POST['username']);
    $password_post=mysql_escape_string($_POST['password']);
    //
    //Controlliamo se tutti i campi sono compilati

    if($_POST['username']== "" || $_POST['password'] == "" )
    //Se alcuni campi non sono compilati...
    {
      die(
    "Alcuni campi non sono compilati"); //...terminiamo lo script e mandiamo un errore all'utente
    }

    //Impostiamo la query...
    $query "SELECT COUNT(*) n  FROM utenti WHERE username = '$username_post' AND password='$password_post' ";
    $risultato mysql_query($query//...e la eseguiamo
    or die("Impossibile eseguire query.
    "
    .mysql_error()); //Oppure mandiamo il solito errore
    $find mysql_fetch_assoc($risultato); //Fissiamo la riga

    //se non c'è un utente con quei dati quindi login errata:
    if ($find['n']==0)
    {
      die(
    "Username e/o password errati"); //..mandiamo l'errore e terminiamo lo script
    }
    else {
        
    $_SESSION['username'] = $username_post;
        
    $_SESSION['password'] = $password_post;
    }
    ?>
    In tutte le altre pagine dell'area riservata, invece, vi è, come prima cosa, questo codice:

    Codice PHP:
    <?php 
        session_start 
    ();
        
        
    $username $_SESSION['username'];
        
        if (
    $_SESSION['username']=="")
            die (
    "Non hai i diritti per accedere a questa pagina");
    ?>
    Pra il problema nasce dal fatto che per certe pagine dell'area riservata va tutto bene, mentre per molte altre mi dice "Non hai i diritti per accere a questa pagina", come d'altronde dovrebbe fare soltanto in caso che $username fosse vuota... Avete qualche idea??

  2. #2
    in tutte le pagine c'è lo stesso codice per il controllo della sessione in testa?

  3. #3

  4. #4
    Utente di HTML.it L'avatar di marco80
    Registrato dal
    May 2005
    Messaggi
    1,357
    Non e' che con qualche operazione ripassi dalla index dove sta il primo pezzo di codice e controlli i dati post ? quindi non li trova e si ferma sul die! prima dei dati post controlla se la sessione esiste già!
    La vita e' uno switch();

  5. #5
    E come faccio a controllare se la sessione esiste già?? Ripeto, per molte pagine il codice che ho messo funziona, per altre invece mi va sul die..

  6. #6
    Viruz, si, in tutte le pagine c'è sempre lo stesso codice.. veramente non so più a cosa pensare....

  7. #7
    Utente di HTML.it L'avatar di marco80
    Registrato dal
    May 2005
    Messaggi
    1,357
    usa il primo pezzo di codice solo per il login e crei la sessione.

    session_start() nelle altre e usi la sessione.

    Prima di fare il controllo sui post controlli se la sessione esiste tipo

    Codice PHP:
    if(!isset($_SESSION['username'])){ //se non e' stata ancora creata controlli i dati post per il login
    //.. qui il primo pezzo di codice per creare la sessione
    //da qui in poi hai la sessione

    La vita e' uno switch();

  8. #8
    Scsusa marco80, ma non riesco a capire la logica... La prima parte del codice che ho postato è utlizzata soltanto dalla pagina che riceve i dati postati dal login (cioè, nel mio caso, la pagina controlla_login.php), mentre la seconda parte è la pagina controlla_dati.php e c'è all'inizio di ogni pagina. Il fatto di controllare la sessione nella pagina di login non la capisco.. E' logico che la variabile $_SESSION['username'] non sia settata all'inizio. Piuttosto il problema è controllare che non si azzeri durante la navigazione. E se ciò accadesse, cosa potrei fare??

  9. #9
    Utente di HTML.it L'avatar di marco80
    Registrato dal
    May 2005
    Messaggi
    1,357
    Ok. cerca di capire dove e quando si azzera. Non so se e' una questione di tempo per settaggio o se in qualche funzione/metodo fai un unset. Perche' se dalla prima parte di codice non passi piu' dopo il login ma pare strano che si azzeri.
    La vita e' uno switch();

  10. #10
    Io controllerei proprio quelle pagine in cui ti da errore. Magari hai scritto:

    Codice PHP:
    if ($_SESSION['username']="")
            die (
    "Non hai i diritti per accedere a questa pagina"); 
    Una dimenticanza può sempre capitare..

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.