Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    28

    problema logout sessioni php

    Ciao, ho un piccolo problema, non riesco a fare un logout. Se avete un attimo di tempo potete dare un occhio al mio script?
    Mi spiego, il sito intanto on line gira su un server windows:
    ho una pagina di login:

    1) "login.php":


    Codice PHP:
    <html
    <
    head
        <
    title>LOGIN UNIVOCO</title
    </
    head
    <
    link rel=stylesheet href="style4.css" type="text/css">
    <
    body

    <
    h1>LOGIN UNIVOCO</h1

    <
    form method="post" action="homepage.php"
    Username: <input type="text" name="txt_username"


     
    Password: <input type="password" name="txt_password"


     
    <
    input type="submit" value="login"
    </
    form

    </
    body
    </
    html
    se clicco e vado sulla homepage.php funziona tutto regolarmente, se notate in fondo a questo script c'è il link "esci" che va su "homepage_prova.php"....

    2) "homepage.php":

    Codice PHP:
    <?php 
    //Includo i file per la connessione 
    //e per la verifica Utente 
    require_once('db_conn.php'); 
    require_once(
    'datediff.php'); 
    require_once(
    'verify.php'); 
    ?> 
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 

    <html> 
    <head> 
        <title>Area Privata</title> 
    </head> 
    <link rel=stylesheet href="style3.css" type="text/css">
    <body> 
     
    <?php 
    //testare la sessione 
    echo @$login_err

    //Controllo che l' utente sia loggato 
    if(IsSet($_SESSION['logged'])){ 
        echo 
    "solo il webmaster puo' vedere questo"."
    "
    ;
        echo 
    "

    Benvenuto utente: "
    .@$_SESSION['logged'][0];
        
    //echo "
    Ultima Visita". date("d-m-Y H:i:s", @$_SESSION['logged'][1]); 
        
        ?>
        


        Area privata 
        <link rel=stylesheet href="
    style3.css" type="text/css">
        
        <p class="
    posizione1">
            
        [url="
    iscrizioni.php"]verifica gli utenti iscritti[/url]

          
        [url="
    homepage_prova.php"]Esci[/url]

        </p> 
        <?php
    }else 
         
    echo "

    Non sei autenticato !"."
    [url='login.php']login[/url]"."
    ";  

    ?> 

    </body> 
    </html>

    Se clicco su homepage_prova.php la prima volta, lo script mi distrugge tutte le sessioni e i cookie, e fino qui tutto ok.


    3) "homepage_prova.php":

    Codice PHP:
    <?php  
    // logout.php 
    // Unset di tutte la variabili di sessione
    $_SESSION = array(); 
    // Distruggi l'eventuale cookie con l'ID di sessione (se esiste)
    if (isset($_COOKIE[session_name()])) 
    setcookie(session_name(), ''time() - 90000); 
    // Distruggi la sessione, inseriamo la riga comunque, 
    //una volta che PHP
    // viene aggiornato ad una versione senza il bug, 
    //questa funzionerà nuovamente
    session_destroy(); 
    // Redirigi alla pagina destinazione
    header("Location: " $_SERVER['HTTP_REFERER']);
    ?>


    Il problema è che, quando entro col mio login e subito dopo vado sul link "iscrizioni.php" che mi permette di visualizzare alcuni dati, da qui, se clicco poi su "esci" (che è lo stesso link di uscita della prima pagina privata), lo fa niente! Cioè non funziona piu'!
    Funziona solo la prima volta ma se inizio a navigare non mi fa il logout.
    Secondo voi quale è il problema?


    4) file "iscrizioni.php":



    Codice PHP:
    <?php
    //Includo i file per la connessione 
    //e per la verifica Utente 
    require_once('db_conn.php'); 
    require_once(
    'datediff.php'); 
    require_once(
    'verify.php'); 
    ?> 

    <html>
    <head>

    <body>
    <?php

    //Controllo che l' utente sia loggato 
    if(IsSet($_SESSION['logged'])){ 
        echo 
    "

    username: "
    .@$_SESSION['logged'][0]; 
        echo 
    '
    '
    ;
        
    echo 
    "mail selezionate:"."
    "
    ;

    $utenti_mail="SELECT * FROM utenti" 
    $utenti_mail2 mysql_query($utenti_mail,$connessione); 
    while(
    $utenti_mail3 mysql_fetch_array($utenti_mail2)) {
    echo
    "
    "
    ,"[b]".$utenti_mail3['indirizzo_email']."[/b]"
    echo 
    "
    "


    }
    }  

    ?>

    [url="homepage.php"]Torna all'homepage[/url]

    [url="homepage_prova.php"]Esci[/url]  
    </body>
    </html>

  2. #2
    non si vede alcun session_start() ....

    senza quello le sessioni sono solo mentali ... a meno che tu non utilizzi session.auto_start

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

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    28
    intendi nell'ultimo file iscrizioni.php?

    E' incluso nel file verify.php che non ho postato...

  4. #4
    Originariamente inviato da maubox8
    intendi nell'ultimo file iscrizioni.php?

    E' incluso nel file verify.php che non ho postato...
    diciamo che session_start() c'e'. Sulla fiducia.

    A quest'ora non riesco a leggere con efficienza il codice. Pure ho difficolta' a capire bene il giro del fumo che fai.... ma una domanda l'avrei: perche' lo rimandi al $_SERVER['HTTP_REFERER'] ???

    mandalo alla pagina login .... a prescindere da dove arriva.

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

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    28
    ok, grazie comunque per l'interesse!
    Ho appena provato a mettere cosi':
    header("Location: http://www.mio_sito.it/login.php");
    pero' non funziona. Cioè sulla pagina di login ci va' pero' se vado indietro col browser dopo aver fatto "esci" rivedo la pagina privata...

  6. #6
    Se vai indietro col browser ti rivedi le pagine in cache (del browser) e non puoi farci nulla lato server. D'altronde sono le "sue" pagine (del client).

    L'importante e' che se il browser torna in una pagina protetta il tuo script controlli se la variabile di sessione esiste oppure no.

    Se vuoi puoi anche cambiare l'id di sessione rigenerando l'id (da php >= 4.3.3 ). Prova:

    Codice PHP:
    <?php
    session_start
    ();

    $_SESSION = array();

    session_regenerate_id();

    header("Location: login.php");
    exit;

    ?>

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

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    28
    ok, grazie e quest'ultima cosa di rigenerazione in che punto la metto? Dove c'è la pagina di logout? Cioè homepage_prova.php?

  8. #8
    Originariamente inviato da maubox8
    ok, grazie e quest'ultima cosa di rigenerazione in che punto la metto? Dove c'è la pagina di logout? Cioè homepage_prova.php?
    ti ho messo l'esempio del logout.

    non ti serve cambiare il cookie. Lo fa da solo.

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

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    28
    ok pero' io questa cosa del coockie l'ho letta su un forum di aruba... da quanto ho capito, php su windows agisce in modo diverso che su linux. Cioè mi sembra di aver capito che le bisogna agire anche sui cookie. E io ho il sito che gira su server windows...
    Bo non ci sto capendo piu' niente

  10. #10
    Originariamente inviato da maubox8
    ok pero' io questa cosa del coockie l'ho letta su un forum di aruba... da quanto ho capito, php su windows agisce in modo diverso che su linux. Cioè mi sembra di aver capito che le bisogna agire anche sui cookie. E io ho il sito che gira su server windows...
    Bo non ci sto capendo piu' niente
    dipende dalla versione del php. Forse e' quello che intendono. controlla la versione che utilizza il server. Il classico phpinfo();

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