scadenza sessioni

emanuelevt

Utente Attivo
24 Giu 2009
298
0
0
sale ragazzi; ho quessto codice che serve per determinare il login o il logout di un utente; ma come posso fare in modo che dopo un determinato tempo la sessione ($_SESSION['authorized']) scade?

Codice:
[COLOR="blue"]<?php[/COLOR] 

//recuper i valori di username e password per il confronto
[COLOR="blue"]require_once[/COLOR] [COLOR="red"]'config.inc.php'[/COLOR];

[COLOR="blue"]function [/COLOR][COLOR="red"]loggedIn[/COLOR](){
 [COLOR="blue"]return isset[/COLOR]([COLOR="red"]$_SESSION['authorized'][/COLOR]);
}

[COLOR="blue"]if[/COLOR]([COLOR="blue"]isset[/COLOR]([COLOR="red"]$_POST['submit'])[/COLOR]){
	[COLOR="blue"]if[/COLOR]([COLOR="red"]$_POST['username']==ADMIN_USER [/COLOR][COLOR="blue"]and [/COLOR][COLOR="red"]$_POST['password']==ADMIN_PASS[/COLOR]){
	[COLOR="red"]$_SESSION['authorized']=TRUE;[/COLOR]	
	}
}

[COLOR="blue"]if(isset[/COLOR]([COLOR="red"]$_REQUEST['logout'][/COLOR])){
 [COLOR="blue"]unset[/COLOR]([COLOR="red"]$_SESSION['authorized'][/COLOR]);
}


[COLOR="blue"]?>[/COLOR]
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
puoi utilizzare anche un formato come questo:
PHP:
session_start();
ini_set('session.gc_maxlifetime', '600');
 

emanuelevt

Utente Attivo
24 Giu 2009
298
0
0
ragazzi poiché non riesco a far funzionare nessuno dei due modi - non si può fare una cosa del genere?

- prelevo il timer() in cui l'utente è entrato
- applico la funzione timer();
- faccio la differenza e vedo i secondi di connessione
- a tot. secondi faccio l'unset della sessione

il fatto è che ci ho provato ma quando vado ad inserire il tempo in una sessione con la funzione timer() appena aggiorno la pagina anche questa si rinnova e quindi la differenza è sempre nulla... mi potete postare qualche codice che faccia qualcosa del genere?
 

emanuelevt

Utente Attivo
24 Giu 2009
298
0
0
ragazzi ma (anche se lato client) non si potrebbe usare la funzione setTimeout di javascript per attivare l'unset della sessione?
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Non è una soluzione accettabile, aggirabile anche dal più incapace, e nessuno sano di mente la userebbe. L'unico sistema che conosco, un po' complesso, è questo: al login salvi in una tabella sul database l'ID dell'utente, l'ID della sessione e la scadenza della sessione (in formato UNIX time), inoltre crei un cookie, con scadenza pari a quella nel database, che contiene l'ID di sessione. Poi, ad ogni apertura di qualsiasi pagina, cancelli le sessioni scadute dal database, e se anche quella dell'utente attuale non è più nel database cancelli il cookie (se c'è) e la sessione, altrimenti recuperi i dati dal database e crei una nuova sessione con l'ID dell'utente. In questo modo, inoltre, la sessione sopravvive alla chiusura del browser, perché viene ricreata ogni volta.
 

emanuelevt

Utente Attivo
24 Giu 2009
298
0
0
scusami ma che intendi per scadenza di sessione in formato unix time? il formato unix time non è quello dal 1 gennaio 1970?
 

emanuelevt

Utente Attivo
24 Giu 2009
298
0
0
:) ci sono arrivato dopo - quindi mi converebbe creare una funzione per l'inizio di ogni pagina che inserisca o elimini i dati dalla tabella, gestendo così le sessioni.
Ci proverò e grazie mille del consiglio
 

emanuelevt

Utente Attivo
24 Giu 2009
298
0
0
per Eliox:

ho provato ad inserire ini_set('session.gc_maxlefttime','2'); sia prima che dopo l'inizio della sessione, ma perdona la mia ignoranza:

il codice riportato qui sotto non dovrebbe farmi automaticamente l'unset di tutte le sessioni dopo 2 secondi?



PHP:
if(!isset($_SESSION)){
session_start();
ini_set('session.gc_maxlefttime','2');
}
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
due è un numero a caso, puoi modificarlo col valore che vuoi (compatibilmente con le impostazioni del Web server)
 

emanuelevt

Utente Attivo
24 Giu 2009
298
0
0
il problema è che se inserisco questo codice (ho messo due per prova) e vado ad aggiornare la pagin passati i due secondi - le sessioni rimangono settate.

(ti ricordo che uso easy-php in locale)
 

emanuelevt

Utente Attivo
24 Giu 2009
298
0
0
ciao, si infatti avevo sbagliato a scrivere qui :hammer: cmq dove è che sbaglio?

PHP:
<?php

if(!isset($_SESSION)){
	session_start();
	ini_set('session.gc_maxlifetime','10');
}


?>

<html>
<head>
</head>
<body>
<?php

$_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 !!! :incazz:
echo $_SESSION['auto'];
?>
</body>
</html>
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Ovvio che te lo fa apparire: ad ogni caricamento della pagina lo risetti... non è così che funziona. La sessione chiaramente non viene settata ad ogni refresh della pagina, ma solo in determinate circostanze (login o altro), altrimenti così, anche quando la sessione scade, verrà ricreata ogni volta.
 

emanuelevt

Utente Attivo
24 Giu 2009
298
0
0
allora con questo codice dovrebbe funzionare

PHP:
<?php 

if(!isset($_SESSION)){ 
    session_start(); 
    ini_set('session.gc_maxlifetime','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>

dove sbaglio?
 
Discussioni simili
Autore Titolo Forum Risposte Data
G Controllo scadenza sessioni PHP 2
D [JSP] Gestire eccezioni relative alla scadenza delle sessioni Java 0
SolidSnake4 tempo scadenza sessioni PHP 6
E scadenza licenza software PHP 1
P Visual Studio VB.NET Visualizzare un messaggio alla scadenza. .NET Framework 0
crealatualista [PHP] Data di scadenza formato (aammgg) PHP 5
filomeni Scadenza cookie PHP 3
G Controllo scadenza date PHP 6
S Inviare email reminds scadenza PHP 25
max_400 Scadenza cookie... non si cancella entro il tempo stabilito PHP 1
H Record con scadenza in giorni PHP 2
max_400 php: sessione scadenza a tempo e reidirect - by max4001976 PHP 1
G Scadenza date PHP 3
neo996sps Scadenza di una news PHP 35
J Scadenza Cookie Classic ASP 5
B Scadenza iscrizione utenti PHP 0
A scadenza sessione o cookie? PHP 2
G Scadenza Variabili di Sessione Classic ASP 1
keyascii File temporanei Sessioni PHP 6
T PROBLEMA CON SESSIONI PHP 3
ilsuomillennio Sessioni PHP 3
maxnegri Contare sessioni aperte e creare condizione PHP 1
AC1 Sessioni php PHP 16
S [PHP] problemi con le sessioni PHP 3
B [PHP] Reload pagina e sessioni PHP 3
A Php e sessioni PHP 3
J sessioni in PHP PHP 3
T gestione livelli sessioni php msqli PHP 1
M Problema MySQL e sessioni MySQL 0
A form su più pagine e sessioni PHP 8
V Le sessioni: ho dei dubbi sul posizionamento PHP 6
A sessioni sicure? PHP 5
M Sessioni??? PHP 4
C Sessioni in php (urgente) PHP 4
R Efficenza sessioni con proxy PHP 0
baobabdesign Problema scrittura sessioni PHP 0
Shyson Non mantiene sessioni PHP 0
L segnalare l'utilizzo delle sessioni come accade per i cookie PHP 0
D Login con sessioni per 2 pagine diverse PHP 2
L problema array con le sessioni PHP 1
D Sessioni e variabili PHP 4
R problema con le sessioni PHP 2
L Sessioni rank [#PHP] PHP 3
R Sessioni, cookies e token di autenticazione PHP 0
E [risolto] win 8.1 + IE11 le sessioni PHP non fuonzionano correttamente PHP 7
A Sessioni php PHP 0
otto9due [risolto] Problema sessioni php e login PHP 5
B Sessioni PHP 10
H [risolto] Uso delle SESSIONI PHP 2
F Sessioni PHP 1

Discussioni simili