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
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 .
Grazie ancora !!!