Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    13

    problemi con session_destroy()

    Ho scopiazzato in giro e sucessivamente modificato secondo le mie esigenze questo pezzo di codice, ma non mi funziona il logout, sono tre ore che provo e riprovo, ma non capisco per quale motivo non funziona (solo il logout).
    Saluti a tutti e Buona Notte...
    aLe.bEr

    =============[ codice ]=============================

    <?php
    //dati per il login
    $login_user="prova";
    $pass_user="prova";
    $redirect="http://www.miosito.it/login.php";

    //gestione della sessione nel caso in cui i cookie sono disabilitati
    if(IsSet($_POST['PHPSESSID']) && !IsSet($_COOKIE['PHPSESSID']))
    {
    $PHPSESSID=$_POST['PHPSESSID'];
    header("Location: $redirect?PHPSESSID=$PHPSESSID"); //si ricarica la pagina di login
    }

    session_start(); //si inizia o continua la sessione

    //controllo user e passwd da login
    if(IsSet($_POST['posted_username']) && IsSet($_POST['posted_password']))
    {
    if($login_user==($_POST['posted_username']) && $pass_user==$_POST['posted_password'])
    $_SESSION['user']=$_POST['posted_username'];
    }

    //logout
    if($_GET['logout']==1)
    {
    $_SESSION=array(); // Desetta tutte le variabili di sessione.
    session_destroy(); //DISTRUGGE la sessione.
    header("Location: $redirect"); //si ricarica la pagina di login
    exit; //si termina lo script in modo da ritornare alla schermata di login
    }

    ?>
    <HTML>
    <HEAD>
    </HEAD>
    <BODY>
    <?php
    $PHPSESSID=session_id();

    if(!IsSet($_SESSION['user'])) //non siamo loggati, pagina di login
    {

    if (IsSet($_POST['SUBMIT'])) //errore nome utente e/o password
    print("Errore nome utente e/o password.

    ");

    print("

    <FORM METHOD=POST ACTION=\"login.php\">
    username: <INPUT TYPE=TEXT SIZE=20 NAME=posted_username>

    password: <INPUT TYPE=PASSWORD SIZE=20 NAME=posted_password>



    <INPUT TYPE=SUBMIT NAME=SUBMIT VALUE=\"Loggami\">
    ");


    if(!IsSet($_COOKIE['PHPSESSID'])) //i cookie sono off, dobbiamo propagare noi il PHPSESSID
    print("<INPUT TYPE=HIDDEN NAME=PHPSESSID VALUE=$PHPSESSID>");
    print("</FORM>");
    }
    else //siamo loggati pagina riservata
    {
    $username=$_SESSION['user'];
    print("Il tuo ID: $PHPSESSID

    ");
    print("Sei loggato come: $login_user

    ");
    print("<A HREF=\"login.php?logout=1\">logout</A>");
    }
    ?>
    </BODY>
    </HTML>

  2. #2
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    ho provato lo script: il logout mi funziona (php 4.3.10)


    l'unica cosa che compare sono alcuni notice, ti conviene inserire error_reporting(E_ALL); ad inizio pagina x visualizzare tutti i warning ed i notice.


    think simple think ringo

  3. #3
    Originariamente inviato da marketto
    ho provato lo script: il logout mi funziona (php 4.3.10)

    l'unica cosa che compare sono alcuni notice, ti conviene inserire error_reporting(E_ALL); ad inizio pagina x visualizzare tutti i warning ed i notice.

    Credo che il problema che riscontra sia dovuto alla non chiusura del browser. La sessione rimane valida per il cookie di sessione nella cache. Sicuramente $_SESSION viene azzerato. Se quello che si aspetta e' il cambio dell'id di sessione sarebbe sufficiente far scadere il cookie nel browser.... e poi gestire meglio i NOTICE...
    codice:
    //logout 
    if(isset($_GET['logout']) AND $_GET['logout'] == 1)
    { 
    $_SESSION = array();  // Desetta tutte le variabili di sessione.
    setcookie(PHPSESSID, $PHPSESSID, time() - 3600);  // azzero il cookie sul browser
    session_destroy();    //DISTRUGGE la sessione.
    header("Location: $redirect");  //si ricarica la pagina di login
    exit;   //si termina lo script in modo da ritornare alla schermata di login
    }
    poi spaziare un po lo script non sarebbe mica male....


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

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    13
    continua a non funzionare...
    anch'io immagino che fosse docuto al fatto che non eliminava il cookie, ma nonostante la modifica proposta continua a non fare il logout.
    vi posto il sorgente modificato in fondo al post.

    un esempio l'ho messo on line all'indirizzo www.pandamarostica.it/login

    ciao a tutti e grazie per le vostre risposte..
    aLe.bEr


    codice:
    <?
    	//dati per il login
    	$login_user = "admin";
    	$pass_user = "189bbbb00c5f1fb7fba9ad9285f193d1"; //MD5("prova")
    	$redirect = "http://www.pandamarostica.it/login/login.php";
    
    	//gestione della sessione nel caso in cui i cookie sono disabilitati
    	if (isset($_POST['PHPSESSID']) && !isset($_COOKIE['PHPSESSID'])) {
    		$PHPSESSID = $_POST['PHPSESSID'];
    		header("Location: $redirect?PHPSESSID=$PHPSESSID"); //si ricarica la pagina di login
    	}
    
    	session_start(); //si inizia o continua la sessione
    
    	//controllo user e passwd da login
    	if (isset($_POST['posted_username']) && isset($_POST['posted_password']))
    		if ($login_user == ($_POST['posted_username']) && $pass_user == md5($_POST['posted_password']))
    			$_SESSION['user'] = $_POST['posted_username'];
     
     	//logout
     	if (isset($_GET['logout'])) { 
    		$_SESSION = array(); // desetta tutte le variabili di sessione
    		setcookie(PHPSESSID, $PHPSESSID, time() - 3600); // azzero il cookie sul browser
    
    		session_destroy(); //distrugge la sessione
    		header("Location: $redirect"); //si ricarica la pagina di login
      		exit; //si termina lo script in modo da ritornare alla schermata di login
    	}
    ?>
    <HTML>
    	<HEAD>
    	</HEAD>
    	<BODY>
    		<?
    			$PHPSESSID = session_id();
    			 
    			if (!isset($_SESSION['user'])) { //non siamo loggati, pagina di login
    
    				if (isset($_POST['SUBMIT'])) //errore nome utente e/o password
        				print("Errore nome utente e/o password.
    
    ");
    
    				print("
    
     <FORM METHOD=POST ACTION=\"login.php\">
    				       username: <INPUT TYPE=TEXT SIZE=20 NAME=posted_username>
    
    				       password: <INPUT TYPE=PASSWORD SIZE=20 NAME=posted_password>
    
    
    				       <INPUT TYPE=SUBMIT NAME=SUBMIT VALUE=\"login\">
    ");
    
    				if (!isset($_COOKIE['PHPSESSID'])) //i cookie sono off, dobbiamo propagare noi il PHPSESSID
        				print("<INPUT TYPE=HIDDEN NAME=PHPSESSID VALUE=$PHPSESSID>");
      			
    				print("</FORM>");
    			}
    			else //siamo loggati pagina riservata
    			{
    				$username = $_SESSION['user'];
    				print("Il tuo ID: $PHPSESSID 
    
    ");
    				print("Sei loggato come: $login_user
    
    ");
    				print("<A HREF=\"login.php?logout=1\">logout</A>");
    			}
    		?>
    	</BODY>
    </HTML>

  5. #5
    Credo che sarebbe interessante capire cosa intendi dire per non funzionare....

    Ora ti cambia la sessione ogni volta che fai il logout. Spiega per bene quali sono le tue aspettative da questo logout.

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

  6. #6
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    online non funziona, offline funziona

    inserisci questo ad inizio pagina, ci sono alcuni notice di variabili non settate:
    codice:
    error_reporting(E_ALL);
    prova a stampare nel codice online il valore dell'array $_SESSION tramite il print_r.
    think simple think ringo

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    13
    vorrei che la sessione venisse distrutta, ossia che se ritento di vedere la pagina di login mi venisse presentata la pagina di login, cosa che al momento non succede...

  8. #8
    Originariamente inviato da marketto
    online non funziona, offline funziona

    inserisci questo ad inizio pagina, ci sono alcuni notice di variabili non settate:
    codice:
    error_reporting(E_ALL);
    prova a stampare nel codice online il valore dell'array $_SESSION tramite il print_r.
    A me funziona sia offline che online.

    Vorrei capire cosa ci si aspetta da questo logout....

    :master:

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

  9. #9
    Originariamente inviato da Carlpip
    vorrei che la sessione venisse distrutta, ossia che se ritento di vedere la pagina di login mi venisse presentata la pagina di login, cosa che al momento non succede...
    A me funziona perfettamente. mi presenta puntualmente la pagina di login ad ogni logout ed assegna un nuovo session_id al successivo login.....

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

  10. #10
    Ho fatto un paio di prove. Hai un bug nella gestione del login nel caso l'utente non usi i cookies. In pratica gli assegni comunque un session_id a priori, mentre questa assegnazione dovrebbe avvenire solo dopo il riconoscimento dell'utente.


    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.