scadenza sessioni

ciao
io proverei a tirare fuori dall'if il ini_set('session.gc_maxlefttime','2');

PHP:
if(!isset($_SESSION)){ 
session_start(); 
}  
ini_set('session.gc_maxlefttime','2');
perchè se la sessione esiste la riga non viene eseguita
 
grazsie per la risposta! - ma purtroppo niente - se faccio F5 dopo 10 secondi la sessione risulta sempre settata (ovvero continuo a vedere prova)....

ti posto il codice - potresti vedere se a te ti fa l'unset della sessione in locale?

PHP:
<?php
if(!isset($_SESSION)){  
session_start();  
}   
ini_set('session.gc_maxlefttime','10');
?>
<html>  
<head>  
</head>  
<body>  
<form action='<?php echo $_SERVER['PHP_SELF']; ?>' method='post'> 
<input type='text' name='user' /><br /> 
<input type='submit' name='login' /><br /> 

</form> 
<?php  

if(isset($_POST['login'])){ 

if($_POST['user']=='emanuele'){ 
$_SESSION['auto']='prova';  
} 
} 

//qui $_SESSION['auto'] dovrebbe smettere di essere settato dopo 10 secondi?  
//se aggiorno la pagina dopo 10 secondi me lo fa apparire !! 
if(isset($_SESSION['auto'])){ 
echo $_SESSION['auto'];  
} 
?>  
</body>  
</html>
 
ciao
credo che il problema non sia su (al massimo sto dicendo una ca..ata)
ini_set('session.gc_maxlefttime','10');
ma sul fatto che dando l'aggiorna in pratica tu riinvii il form e quindi ricrei tutte le volte la sessione
 
purtroppo penso di no. perchè se faccio così (vedi codice) nn funziona ugualmente ...
Ma ti pare che qualcuno non ha mai provato questa funzione? qualcuno mi può postare un codice in cui a lui funziona :incazz2:
PHP:
<?php 
if(!isset($_SESSION)){   
session_start();   
}    
ini_set('session.gc_maxlefttime','10'); 
?> 
<html>   
<head>   
</head>   
<body>   
<form action='<?php echo $_SERVER['PHP_SELF']; ?>' method='post'>  
ciao<input type='text' name='user' /><br />  
<input type='submit' name='login' /><br />  

</form>  
<?php   

if(isset($_POST['login'])){  

if($_POST['user']=='emanuele'){ 
//**********ho fatto in modo che solo se la sessione non è stata creata la crea*****/ 

if(!isset($_SESSION['auto'])){
$_SESSION['auto']='prova';   

//**********ho fatto in modo che solo se la sessione non è stata creata la crea*****/
}
}  
}  

//qui $_SESSION['auto'] dovrebbe smettere di essere settato dopo 10 secondi?   
//se aggiorno la pagina dopo 10 secondi me lo fa apparire !!  
if(isset($_SESSION['auto'])){  
echo $_SESSION['auto'];   
}  
?>   
</body>   
</html>
 
ciao
forse qualcosina sono riuscito a fare sensa usare ini_set
1. entri nel form e scrivi emanuele + submit la prima volta e session auto diventa prova
2. se dai l'aggiorna, trascorsi 10 secondi, session auto non esite più
c'è un piccolo però
se non sono trascorsi 10 secondi non riesci più a immettere un'altra password ne emanuele
in quanto session contatore non è null
solo trascorsi i 10 secondi riesci ad inserire nuovamente emanuele e auto diventa di nuovo prova per altri 10 secondi
sembrerebbe comunque che i vari "aggiorna" trascorsi i 10 secondi non ricreano più la sessione auto

PHP:
<?php  
if(!isset($_SESSION)){    
session_start();    
}      
?>  
<html>    
<head>    
</head>    
<body>    
<form action='<?php echo $_SERVER['PHP_SELF']; ?>' method='post'>   
ciao<input type='text' name='user' /><br />   
<input type='submit' name='login' /><br />   
</form>   
<?php    
//riesco ad entrare solo se ho dato il subimit e se la session contatore è NULL
if(isset($_POST['login']) && $_SESSION['contatore']==NULL){
	//le sessioni contatore e vita si aggiornano solo se sono entrato nell'if del post  
	$_SESSION['contatore']=(int)$_SESSION['contatore']+1;
	//session vita si aggiorna solo se entro nell'if
	$_SESSION['vita']=time()+10;//dieci secondi dalla creazione
	if($_POST['user']=='emanuele'){  
		$_SESSION['auto']='prova';
	}   
}else{
	echo "<br> non sono entrato enll'if";
}
//sino a che session vita è maggiore di time NON sono passati 10 secondi
if($_SESSION['vita']<time()){
	unset($_SESSION['auto']);
	unset($_SESSION['contatore']);//unsetto il contatore per poter ricominciare
}
echo "<br>il contatore dovrebbe rimanere sempre uno ".$_SESSION['contatore'];
echo "<br>il tempo di vita dovrebbe sempre rimanere uguale".$_SESSION['vita'];
echo "<br>quindi la sessione auto risulta ".$_SESSION['auto'];
?>     
</body>
</html>
dai un occhio se ti serve a qualcosa, altrimenti butta via tutto

p.s.
quando scrivi usa l'indentazione
 
Grazie mille!!!

Online ho visto molti script che tentavano di gestire il time() per far scadere le sessioni ma l'unico che mi funziona è questo e il tutto senza usufruire di un database !!!

Ora devo assemblarlo al mio file, se ho difficoltà ti rompo ancora :eek:.
Grazie ancora !!!
 

Discussioni simili