Password temporanee con php

ciao a tutti

ho la seguente situazione:

devo poter visualizzare degli indirizzi solo a utenti che si sono loggati con una certa password, la quale ha la durata di 10 min., passati i quali non si dovrebbero visualizzare + gli indirizzi. Una specie di login con countdown

ho trovato una soluzione client-side con l'ausilio di uno script javascript:

lo script esegue un countdown, al termine del quale esegue un redirect verso logout.php

sapete se c'è la possibilità di farlo solamente con php???

inviato 9 anni fa
lurulu
X 0 X

Prendi il tempo quando l'utente fa il login e continui a monitorare la sessione, quando sono passati dieci minuti cancelli la sua sessione.

Molla il javascript, basterebbe disabilitarlo per fregarti

risposto 9 anni fa
Marco Grazia
X 0 X

giusto !!!, quindi quando l'utente fà il login memorizzo il tempo in una variabile di sessione e ad ogni inizio pagina una condizione tipo

if (($adesso - $ora_entrata) > 10 min){
   
   // LOGOUT session.destroy;

}else{

   // Visualizza pagina

}

che ne dici??

ho chiesto qui proprio perchè il controllo javascript si può aggirare facilmente

risposto 9 anni fa
lurulu
X 0 X

il principio è quello  O0

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

ottimo  ;)

secondo voi in che formato mi conviene memorizzare gli orari?

forse timestamp per la semplicità di operazioni?

risposto 9 anni fa
lurulu
X 0 X

si, il timestamp risulta comodo per calcolare la differenza tra due date.

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

grazie marcolino e gianni per le dritte!! Sono riuscito nel mio intento.   :D non ci credo di aver risolto così in fretta!  :o

solo una cosa per aggiungere la chicca finale: dopo aver fatto una sottrazione tra 2 timestamp posso convertire il risultato in formato ora??

ad esempio:

1190308622 - 1190296010 = 12612

Si può convertire quel 12612 in hh:mm:ss?

risposto 9 anni fa
lurulu
X 0 X

prova con

echo date("H:i:s", 12612);

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

Gianni ti vengo contro! :D

Quel 12612 non è una data/ora ma un numero di secondi che rappresenta la differenza di tempo tra i due istanti, quindi devi fare la conversione più o meno così:

$intervallo = (1190308622 - 1190296010); //il tempo passato in secondi
$secondi = $intervallo%60; //secondi che non raggiungono 1 minuto intero
$intervallo = ($intervallo-$secondi)/60; //il tempo passato in minuti "interi"
$minuti = $intervallo %60; //minuti che non raggiungono 1 ora initera
$ore = ($intervallo-$minuti)/60; //ore intere!

echo "$ore:$minuti:$secondi";

Edit:

Così ottieni a.e. per 8 ore 1 minuto 10 secondi-> 8:1:10

Se vuoi la rappresentazione a 2 cifre, a.e. 08:01:10 devi fare un controllo sulle variabili finali $ore, $minuti, $secondi e usarle come stringhe grazie al casting automatico di php.

risposto 9 anni fa
LonelyWolf
modificato 9 anni fa
X 0 X

Provare per credere:

echo gmdate("H:i:s", 12612);

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda