Visualizzazione dei risultati da 1 a 10 su 10

Discussione: Sessione

  1. #1

    Sessione

    Ciao,

    ho una pagina index.php che ha un'autenticazione utente e passa i valori a un'altra pagina, fatture.php, che è l'indice dell'applicazione e gestisce tutte le azioni. Gli passo infatti il nome della pagina ed in base a quello mi carica il file necessario.
    Ora ho un problema con la sessione. All'inizio di fatture.php ho messo session_start() e poi i controlli affinchè mi controlli l'autenticazione. Ho messo un logout che mi indirizza ad una pagina in cui faccio session_stsrt() e poi session_destroy(). E poi su index.php ho fatto la stessa cosa, pensando che così distruggo la sessione in qualsiasi modo prima di fare il login. In locale tutto questo andava bene. Online però ho trovato dei problemi, ovvero riesco a fare logout solo buttando giù il browser. Dove sbaglio?
    Grazie!

  2. #2
    Questa è una bozza del codice che sto facendo, sicuramente da snellire:

    file fatture.php


    <?
    session_start();
    ?>
    ...cod html...
    <?
    if(!IsSet($_SESSION['cont']))
    {
    $utente = $_GET['utente'];
    $psw = $_GET['psw'];

    if($utente!='utente' || $psw!='pasw')//E' solo di prova
    {
    echo "<table width='700' height='200' border='0'cellpadding='0' cellspacing='5' rules='none' frame='border' align='center'><tr><td class='menu_title_out' align='center'>ERRORE Login</td></tr><tr><td align='center'>Nome utente oppure password errata!!!</td></tr><tr><td align='center'>Torna all'autenticazione.</td></tr></table>";
    exit();
    }
    else
    {
    if(!IsSet($_SESSION['utente']) && !IsSet($_SESSION['psw']))
    {
    $_SESSION['utente'] = $utente;
    $_SESSION['psw'] = $psw;
    $_SESSION['cont'] = 1;
    }
    else
    {
    $_SESSION['cont'] = 1;
    }
    }
    }
    else
    {
    if(!IsSet($_SESSION['utente']) && !IsSet($_SESSION['psw']))
    {
    $_SESSION['utente'] = $utente;
    $_SESSION['psw'] = $psw;
    $_SESSION['cont'] = 1;
    }
    else
    {
    $_SESSION['cont'] = 1;
    }
    }

    ?>

    file out.php

    <?
    session_start();
    $_SESSION = array();
    session_destroy();
    ?>

    -----------------
    Quando torno nell'applicazione malgrado faccio $_SESSION = array(); e il destroy se stampo a video utente in fatture.php me lo fa vedere e quindi non lo desetta. In + mi entra anche se metto utente e psw vuote o sbagliate.

  3. #3
    Utente di HTML.it L'avatar di Teuzzo
    Registrato dal
    Mar 2002
    Messaggi
    969
    prova a mettere anche session_unset(); prima di session_destroy();

  4. #4

  5. #5
    Utente di HTML.it L'avatar di Teuzzo
    Registrato dal
    Mar 2002
    Messaggi
    969
    Quando torni nella pagina ci sono le variabili GET login e password nell'url?

  6. #6
    si. dopo che faccio logout e torno all'autenticazione e clicco sul bottone, anke se non metto nulla nei campi mi torna dentro fatture.php e sull'url c'è utente= e psw=

  7. #7
    Volevo dire che in locale funziona tutto, mentre online da questi problemi. Sto su Aruba per la cronaca.

  8. #8
    E' strano, le variabili di sessione le legge ma non riesce a cancellarle. Eppure ho provato con unset(), $_SESSION = array() senza avere risultati. Rimangono costantemente settate tutte le variabili di sessione.
    Una precisazione...ma per mantenere una sessione occorre scrivere session_start() all'inizio della pagina? basta quello?

  9. #9
    ciao ragazzi...porto di nuovo su questo topic perchè sono rimasto senza soluzione , magari capita qualcuno che riesce a capire quale può essere il problema.
    Gazie!!!

  10. #10
    Originariamente inviato da anto.info
    E' strano, le variabili di sessione le legge ma non riesce a cancellarle. Eppure ho provato con unset(), $_SESSION = array() senza avere risultati. Rimangono costantemente settate tutte le variabili di sessione.
    Una precisazione...ma per mantenere una sessione occorre scrivere session_start() all'inizio della pagina? basta quello?
    Si, basta quello per rinnovare il time out lato server.

    La sessione dura finche' il browser non viene chiuso (lato client)oppure fino a che non scada il time out per inattivita' (lato server). Questo di default. Bisogna verificare php.ini per vedere i valori reali impostati.

    Poiche' la distruzione della sessione comporta che la sessione sia nuovamente inizializzata di solito io seguo la seguente procedura:

    Creo una pagina che si occupi esclusivamente di questo e rimandi al login, cioe' ad una pagina html dove c'e' il form di ingresso. Cosi' sei certo di non trovarti gli stessi dati. Altrimenti devi fare i conti con la cache del browser. ES.:
    codice:
    file exit.php
    
    <?
    session_start();
    $_SESSION = array();
    session_unset();
    session_destroy();
    header ( "location: http://www.tuo.path/login.htm");
    ?>
    Quindi da qualunque pagina in cui mi serve eliminare la sessione posto un link a questa pagina exit.php e ti assicuro che non ho mai visto ritornare sessioni o valori di sessione. Anzi, se guardo nel direttorio dei file di sessione non solo azzera ma cancella pure il file di sessione.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

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.