Visualizzazione risultati 1 fino 19 di 19

Discussione: Session destroy????

  1. #1
    lionalex non è connesso Utente attivo
    Data registrazione
    10-12-2002
    Messaggi
    446

    Unhappy Session destroy????

    ho creato un modulo login con le sessioni di PHP. Ho poi fatto in modo che se volessi uscire dall'area privata, cliccando su di un collegamento questo mi farà uscire e contemporaneamente dovrebbe distruggere il file di sessione e le sue variabili, il problema è che tutto questo non avviene, o meglio, riesco ada uscire ma il file di sessione continua ad esistere e quel che è peggio e che continuano ad esistere le sue variabili così se uno esce e poi vuole rientrare senza password, può benissimamente farlo (sempre se la finestra di explorer non viene chiusa) Vi scrivo il codice che ho usato.
    Codice PHP:
    <?
    $id
    =1253471347154858;
    session_id($id);
    session_start();
    if (!empty(
    $_GET['logout'])){ /*Controlla se voglio uscire*/
    if ($_GET['logout']=="SI"){
    $_SESSION['stato']="disattivo";
    session_unset(); /*Elimina le varibili di sessione*/
    session_destroy(); /*elimina (dovrebbe) il file di sessione*/
    ?>
    <script language="Javascript">
    location.href="index.php";
    </script>
    <?
    }
    }
    ?>
    Perchè non funziona la SESSION_DESTROY()?Esiste un modo alternativo e FUNZIONANTE che mi distrugga le variabili di SESSIONE????
    Chi troppo vuole....vuole LionAlex...

  2. #2
    Guest

    Predefinito

    mmm credo che fare prima $_SESSION['stato'] = "disattivato"; e poi voler distruggere quella variabile serva a poco.

    Comunque puoi fare
    unset($_SESSION);
    session_destroy();

    a me funziona perfettamente..

    fammi sapere

  3. #3
    lionalex non è connesso Utente attivo
    Data registrazione
    10-12-2002
    Messaggi
    446

    Thumbs up

    Grazie mille, avevi ragione, ora funziona come si deve. GRAZIE
    Chi troppo vuole....vuole LionAlex...

  4. #4
    lionalex non è connesso Utente attivo
    Data registrazione
    10-12-2002
    Messaggi
    446

    Thumbs down

    Forse ho esultato troppo presto....in locale funziona ma sul web no...perchè?????
    Chi troppo vuole....vuole LionAlex...

  5. #5
    Guest

    Predefinito

    Devi usare "unset"... perlomeno così si fa per distruggere una varibile.. se però devi distruggere qualcos'altro CHE NON SIA VARIABILE unset non ti serve a nulla...

    Poi non prendere troppo sul serio ciò che dico perchè sto studiando il php e sono alle primissime armi...

  6. #6
    L'avatar di mythologia
    mythologia non è connesso Moderatore
    Data registrazione
    05-01-2004
    Messaggi
    2,614

    Predefinito

    non mi sempbra che unset ti possa aiutrare

  7. #7
    lionalex non è connesso Utente attivo
    Data registrazione
    10-12-2002
    Messaggi
    446

    Question

    unset non mi può srvire, e quindi cosa devo usare????
    Chi troppo vuole....vuole LionAlex...

  8. #8
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito

    Non mi sembra un problema di unset (che deve funzionarti per forza)...
    più che altro sposterei l'attenzione sulla prima parte del codice..
    perché specifichi tu un ID?
    (ammetto che qualcosa può sfuggirmi non ho approfondito molto, dunque chiedo semplicemente)
    Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)

  9. #9
    lionalex non è connesso Utente attivo
    Data registrazione
    10-12-2002
    Messaggi
    446

    Post

    perchè così posso gestire meglio la sessione. Avevo provato a fare senza ID e mi succedeva che facendo il login che andava in una nuova pagina non funzionava più la sessione, ne creava un altra diversa e quindi non mi leggeva le variabili di prima. Es.

    login.php
    Codice PHP:
    <?
    sesison_start
    ()
    ?>
    /........
    ........../*testo html per il login che mi manda sempre a login.php per i controlli*/
    ......../
    <?
    if (password esatta)
    $_SESSION['stato']=attivo;
    ?>
    <script language="Javascript">
    location.href="prova.php";
    </script>
    <?
    else
    ....
    ...
    /*di nuovo il modulo login*/
    ....
    ?>

    prova.php
    Codice PHP:
    <?
    session_start
    ()
    print (
    $_SESSION['stato']); /*risulta vuota*/
    ?>
    se invece specifico l'ID la sessione funziona correttamente
    Ultima modifica di lionalex : 23-10-2004 alle ore 20.58.46
    Chi troppo vuole....vuole LionAlex...

  10. #10
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito

    Sì ma .. che vuol dire.. non ti seguo..
    Mettila così:
    se due utenti più o meno nello stesso lasso di tempo si connettono al tuo sito nella zona con session, ok?,... che fai assegni a entrambi lo stesso ID?? non capisco..

    Ah forse ho capito dove sbagli...
    Subito dopo il:

    session_start();

    devi REGISTRARE le variabili di sessione altrimenti perdi il valore:

    session_register('stato');

    (almeno penso sia così, o meglio io faccio così e funziona... poi magari qualcuno interviene e dice che è la stessa cosa di usare subito:
    $_SESSION['stato'] = 'attivo';
    passo la palla a chi ha approfondito ulteriormente, a me è bastato fare così, e non impongo un ID fisso assolutamente)
    Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)

  11. #11
    Guest

    Predefinito

    Certo che non funziona. perche' la variabile session deve essere inizializzata prima che tu invii dati al client perche' sono informazioni che vengono inserite nell'header del messaggio http! Di conseguenza se tu invii del testo (anche non html) il pacchett http con l'header e' stato inviato e di conseguenza il client non memorizza la session (o il cookie) e quindi non funge. Tu devi inserire le informazioni della session prima di qualsiasi codice html

    session_start();

    if(!isset($_SESSION['accesso'])) $_SESSION['accesso'] = "NO";
    else .....

    Se hai qualche dubbio non esitare a chiedere CIAO

  12. #12
    lionalex non è connesso Utente attivo
    Data registrazione
    10-12-2002
    Messaggi
    446

    Predefinito

    scusa demenziale, non ho capito a cosa ti riferisci....
    Chi troppo vuole....vuole LionAlex...

  13. #13
    Guest

    Predefinito

    Semplicemente questo: se vuoi usare le session devi utilizzarle solo all'inizio di ogni tua pagina. Nel momento in cui tu invii del testo la session non puo' essere piu' utilizzata. Ti faccio due esempi

    <?php
    session_start();
    $_SESSION['stato'] = "Connesso";
    ?>
    <html>...... bla bla

    Questo è ok! ^^^

    <?php
    session_start();
    ?>
    <html>
    <body>
    ....
    <?php $_SESSION['stato'] = "Connesso"; ?>

    Bhe questo non è Ok.... Tutto qui.

    Le SESSION vanno utilizzate prima di mandare qualsiasi tipo di codice html al client!!! PRIMA DI TUTTO questo è importante.

  14. #14
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito

    demenziale:
    dunque dici che il
    session_register('variabile');

    non è strettamente necessario?
    Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)

  15. #15
    lionalex non è connesso Utente attivo
    Data registrazione
    10-12-2002
    Messaggi
    446

    Post

    però io usando l'ID non trovo nessun tipo di errore (a parte il fatto che non riesco a cancellare la sessione), penso che quello che dici tu valga per l'inizializzazione della sessione. In pratica il session_start() deve trovarsi prima di qualsiasi tag html, non credo che lo stesso valga anche per le variabili....posso anche sbagliarmi...
    Chi troppo vuole....vuole LionAlex...

  16. #16
    Guest

    Predefinito

    (Heracleum) Il session_register io non l'ho mai utilizzato.

    (Lionalex) anche l'id della sessione non ho mai utilizzato. Semplicemente imposto l'array session all'inizio. Questo poi viene mandato nell'header del pacchetto http al client il quale memorizza i dati. Basta. Ho fatto siti in cui ho utilizzato la session e per il logout ho scritto semplicemente

    session_start();
    unset($_SESSION);
    session_destroy();
    header('Location: index.php');

    E il tutto ricominciava da capo... Non so dirti altro. Fammi sapere

  17. #17
    lionalex non è connesso Utente attivo
    Data registrazione
    10-12-2002
    Messaggi
    446

    Post

    ho controllato bene il mio codice ed ho visto che in pratica anche a me le variabili di sessione vengono inizializzate prima di qualsiasi tag HTML perchè io faccio un controllo iniziale che se dà esito negativo allora mostra il modulo altrimenti inizializza le variabili, quindi mi sa che il problema non è quello. Per quanto riguarda il logout il problema è se provo a rientrare manualmente (digitando a mando nella barra di explorer l'indirizzo della pagina privata) anche dopo aver cancellato le variabili di sessione, riesco lo stesso a visualizzare la pagina, quando non dovrei farlo....capito ora?
    Chi troppo vuole....vuole LionAlex...

  18. #18
    L'avatar di mythologia
    mythologia non è connesso Moderatore
    Data registrazione
    05-01-2004
    Messaggi
    2,614

  19. #19
    lionalex non è connesso Utente attivo
    Data registrazione
    10-12-2002
    Messaggi
    446

    Unhappy

    Citazione Originalmente inviato da mythologia
    non tantop
    Il mio codice in pratica è:
    Codice PHP:
    <?
    session start
    ();
    if (
    è la prima volta che entri in questa pagina){
    ?>
    ....
    ... modulo html
    ....
    <?
    }
    else{
    /*non è la prima volta*/
    if (password sbagliata){
    ?>
    .....
    ..... di nuovo il modulo HTML che avvisa che la password è sbagliata
    .....
    <?
    }
    else{
    /*password esatta*/
    $_SESSION['stato']="attivo";
    ....
    /*script che mi manda alla pagina privata*/
    ....
    }

    }
    ?>
    Facendo in questo modo anche a me la variabile di SESSIONE viene dichiarata prima di qualsiasi output HTML. Il mio problema comunque è sempre lo stesso.
    Creo una pagina per il logout dove usando i codici che mi avete suggerito anche voi dovrei eliminare i file di sessione ma questo non avviene perchè se dopo provo ad entrare manualmente nella pagina privata, entro lo stesso.
    ES.
    la pagina privata all'inizio ha questo tipo di controllo
    privata.php
    Codice PHP:
    <?
    session_start
    ();
    if (
    $_SESSION['stato']=="attivo"){
    .....
    .....
    /*il codice privato*/
    }?>
    dopo faccio il logout. Teoricamente ora la variabile $_SESSION['stato'] non dovrebbe più esistere, invece se nella barra di explorer digito privata.php entro lo stesso, come se la variabile di sessione non fosse stata cancellata e stia ancora su ATTIVO. Capito ora???? AIUTATEMI.........
    Chi troppo vuole....vuole LionAlex...

Regole di scrittura

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