Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    problema con LOGOUT e SESSIONI

    ciao ragazzi,
    sto avendo dei problemi relativi al logout su delle pagine che lavorano con le sessioni.

    in breve ho creato alcune pagine riservate ai soli utenti iscritti al sito e tutto funziona alla grande. in pratica quando un utente si logga correttamente vengono create le variabili di sessione tra cui $login che, se settata su "ok" indica che l'utente è loggato. questo il codice che crea la variabile $session in caso di login corretto:
    Codice PHP:
    session_start();
    session_register("login"); 
    session_register("email"); 
    $login "ok"
    $email $email_address// assegno alla variabile email l'indirizzo email dell'utente
    // inizio codice per il redirect alla pagina di provenienza
    $url $_SERVER['HTTP_REFERER'];
    echo 
    '<script>';
    echo 
    "  document.location.href = '".$url."'";
    echo 
    '</script>';
    // fine codice per il redirect alla pagina di provenienza 
    poi il problema è che quando provo ad eseguire il logout le variabili vengono "distrutte" (e con una stampa del valore delle variabili ne ho la conferma), ma con un piccolo test sembra che le variabili siano ancora settate.
    in pratica questo piccolo test viene fatto su tutte le pagine in modo tale che se l'utente è loggato gli stampo un msg di benvenuto, altrimenti visualizzo il form di login.

    ecco il codice del test:
    Codice PHP:
     <?php 
    if(!isset($login)){include("users_login_orizzontale.php"); }
    else echo 
    "Benvenuto
    $email";        
    ?>
    ed ecco il codice del logout:
    Codice PHP:
    <?php
        session_start
    ();
        echo 
    "prima del session destroy " $login $email;
        
        unset(
    $login);
        unset(
    $email);

        
    session_destroy();

        echo 
    "valori dopo del session destroy " $login $email;
        
        echo 
    "Logout eseguito!";
        
    // inizio codice per il redirect 
        
    $url "http://www.comefaccio.net";
        echo 
    '<script>';
        echo 
    "  document.location.href = '".$url."'";
        echo 
    '</script>';
    //     fine codice per il redirect 

    ?>
    eseguendo il logout non mi stampa più i valori delle variabili di sessione in quanto non settati, ma al caricamento della pagina successiva stampa ancora il messaggio di benvenuto quando dovrebbe invece mostrare il form di login.

    scusatemi la lunghezza del post, ma era necessaria per spiegarmi bene. grazie in anticipo a chi saprà trovarmi una soluzione (che credo sia molto banale, ma sono due giorni che non capisco il perchè ).
    SMS pronti - Idee per sms!
    GIOCHI ONLINE GRATIS - Corri a giocare!
    manuali e tutorial di informatica
    manuali webmaster - Articoli per webmaster -

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    867
    session_destroy chiude solo la sessione nella tua pagina, ma non la distrugge, per chiuderla davvero devi usare anche session_unset()

    No pvt per sollecitare risposte, grazie.

  3. #3
    ciao afurly,
    innanzitutto ti ringrazio per la risposta, ma devo dirti con molto dispiacere che non và lo stesso...
    mi spiego meglio: la sessione viene sicuramente eliminata. il mio problema sta nel fatto che quando poi ricarica un'altra pagina qualsiasi l'utente viene sempre riconosciuto, quando invece dovrebbe stampare il modulo di login anzichè mantenere il benvenuto all'utente.

    quindi le possibili strade sono due: o non viene distrutta la sessione, oppure la condizione che segue è sbagliata:
    Codice PHP:
        <?php 
            
    if(!isset($login)){
                include(
    "users_login_orizzontale.php"); 
            }
            else echo 
    "Benvenuto
    $email";        
        
    ?>
    preciso che $ login l'ho creata tramite session_register come puoi vedere dal codice del mio primo post di questo topic.

    ho provato con unset(), con session_unregister(), session_unset() ecc... non so cosa più mi rimane di fare... eppure il logout è una cosa così semplice

    grazie ancora e spero che tu o qlc altro mi riusciate ad aiutare
    SMS pronti - Idee per sms!
    GIOCHI ONLINE GRATIS - Corri a giocare!
    manuali e tutorial di informatica
    manuali webmaster - Articoli per webmaster -

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    867
    Le variabili di sessione le accedi cosi':
    Codice PHP:
    $_SESSION['login'
    e il session_register ormai non si usa piu' a favore della sintassi che ho usato sopra, metti le variabili direttamente dentro all'array SESSION con:
    Codice PHP:
    $_SESSION['login'] = "afurly"
    Prova a fare anche questi aggiornamenti oltre a quello del post precedente.
    Scusa se non ti ho detto tutto la prima volta, ma avevo letto sommariamente il tuo codice.

    No pvt per sollecitare risposte, grazie.

  5. #5
    ciao afurly,
    innanzitutto ti ringrazio per la prontezza della risposta!

    le avevo provate tutte prima di postare sul forum, sia come mi hai suggerito tu adesso che con session_register ecc...

    sconsolato, ho provato tremila ricerche su mr google e "finalmente" ho trovato una discussione che mi è servita perlomeno a capire che non dovevo più dannarmi l'anima fino a quando non cambio hosting!

    su server aruba windows non è possibile distruggere le sessioni. VVoVe: strano ma vero. eccovi la discussione ( http://community.aruba.it/cgi-bin/ul...;f=23;t=005183 ), sperando che serva a non far perdere un paio di pomeriggi a chi cerca di distruggere una sessione su windows aruba.

    era strano in quanto avevo finanche consultato il manuale ufficiale di php.net e tutti i siti mi dicevano coerentemente la stessa cosa!!!!

    mah, vorrà dire che non appena possibile cambierò hosting!

    grazie ancora per la disponibilità.
    SMS pronti - Idee per sms!
    GIOCHI ONLINE GRATIS - Corri a giocare!
    manuali e tutorial di informatica
    manuali webmaster - Articoli per webmaster -

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    867
    COme ultima soluzione puoi usare un bel:
    Codice PHP:
    $_SESSION = array(); 
    Cosi' ti cancella le variabili di sessione.... ovviamente se e' vero quello che scrivono in quel post, la sessione rimarra' sul server... e prima o poi scadra'....

    Pero' cosi' facendo le tue variabili verrano cancellate....

    No pvt per sollecitare risposte, grazie.

  7. #7
    anche questo è vero...

    proverò grazie ancora
    SMS pronti - Idee per sms!
    GIOCHI ONLINE GRATIS - Corri a giocare!
    manuali e tutorial di informatica
    manuali webmaster - Articoli per webmaster -

  8. #8
    Ho letto la discussione (anche quella su aruba) ma non riesco a capire come risolvere il problema:

    inizializzo le session così:

    session_start();
    $_SESSION['username']= $username;
    $_SESSION['usergroup']= $usergroup;
    header ("location: index.php?pageid=homepage");

    controllo l'utente così:

    if (isset($_SESSION['username']))
    {
    echo "user: " . $_SESSION['username'];
    }
    else
    {
    echo "utente anonimo";
    }

    e ho provato cancellare le session così:

    session_start();
    $_SESSION = array();
    if (isset($_COOKIE[session_name()])) setcookie(session_name(), '', time() - 90000);
    session_destroy();
    header ("location: index.php?pageid=login");

    Ma ho ancora il nome dell'utente quando eseguo il controllo sopra descritto...
    come posso fare?

  9. #9
    ad essere sincero io ho provato e nemmeno a me ha funzionato!

    quale potrebbe essere la soluzione? passare a linux, come ho fatto io
    SMS pronti - Idee per sms!
    GIOCHI ONLINE GRATIS - Corri a giocare!
    manuali e tutorial di informatica
    manuali webmaster - Articoli per webmaster -

  10. #10
    Bene, farò così...

    Solo una cosa: rimane tutto identico?
    (codice html, codice php, percorso di file, trasferimenti ftp, ecc.)

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.