[PHP] Chiudere sessione quando la pagina viene riaggiornata

Cosina

Utente Attivo
27 Dic 2016
98
0
6
Ciao a tutti. Ho realizzato una pagina riservata con login usando php. Quando l'utente effettua il logout, la sessione viene cancellata e non e` piu` possibile accedere alla pagina riservata se non reinserendo i dati di accesso. Se si prova a raggiungere la pagina via URL, si viene reindirizzati alla home del sito. Tutto ok, ma se l'utente non effettua il logout, puo` rientrare nella pagina tutte le volte che vuole, anche se viene riaggiornata e anche se chiude e riapre il browser. Quello che vorrei, invece, e` che la sessione terminasse , quando l'utente lascia la pagina, anche se non ha effettuato manualmente il logout. E' possibile?
Il codice della pagina di logout e` questo:

PHP:
<?php session_start(); /* Starts the session */
session_destroy(); /* Destroy started session */
header("location:../index");
exit;
?>

Grazie per l'aiuto
 

Eduadie

Utente Attivo
22 Mar 2013
58
7
8
www.mrrobotbet.altervista.org
Che io sappia non esiste una tecnica per poterlo fare, potresti o controllare con Javascript la chiusura della scheda e quindi inviare una richiesta AJAX al server per cancellare la sessione (ovviamente se il Javascript è disabilitato questa modalità non funziona) oppure puoi usare la funzione che determina il tempo di vita della sessione, in modo da "abbatterla" prima che venga chiusa la finestra.
La funzione oltre a determinare la vita, ne rinnova la scadenza se richiamata all'inizio di ogni pagina.
Però una volta abbattuta, la sessione non può essere rinnovata, questi meccanismi vengono utilizzati solitamente nei siti web dove la sicurezza è importante, come area utenti di una banca, oppure mail box online.

PHP:
session_set_cookie_params(<secondi>);
session_start();
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
ti schematizzo quello che potrebbe essere un metodo
1) pagina di log
PHP:
<?php
session_start();
$_SESSION['caso']=rand(1000,9999);//tutte le volte ache accedi alla pagina si genera un numero casuale
$per_form=md5($_SESSION['caso']);//md5 per confondere un po
?>
<form action="accesso_si_no.php?vengo_da=<?php echo $per_form; ?>" method="post">
<!-- i vari campi di input e submit necessari-->
</form>
2) pagina accesso_si_no.php (pagina senza una riga html che serve per fare le verifiche)
PHP:
<?php
session_start();
if(md5($_SESSION['caso'])!=$_GET['vengo_da']){
    //distruggo la sessione e rimando es. alla index
}else{
    //leggo i dati dal form e li verifico da db se utente registrato
    if($registrato){
        //ricreo la sessione casuale
        $_SESSION['caso']=rand(1000,9999);
        $per_riservata=md5($_SESSION['caso']);
        header('location:pagina_riservata.php?vengo_da=$per_riservata');
        exit();
    }else{//rimando alla index
   }
}
?>
3) pagina_riservata.php
PHP:
<?php
session_start();
if(md5($_SESSION['caso'])!=$_GET['vengo_da'] || !isset($_SESSION['caso']) || !isset($_GET['vengo_da'])){
    //distruggo la sessione e rimando es. alla index
}else{
    //elimino comunque la sessione tanto sino a che rimango nella pagina non mi serve
?>
<html>
<!-- tutto l'html o php che serve-->
</html>
<?php
}
?>
se esci dalla pagina riservata sensa il logout e cerchi di rientrare la sessione e il get non esistono piu o in caso di refresh sono diversi e quin non dovrei più riuscire ad entrare se non passando nuovamente dal log
prova e sappimi dire se funziona
 
  • Like
Reactions: Eduadie

Cosina

Utente Attivo
27 Dic 2016
98
0
6
Grazie mille a tutti per le risposte. Faccio le mie prove, nei prossimi giorni e poi vi faccio sapere. Ciao
 
Discussioni simili
Autore Titolo Forum Risposte Data
G [PHP] Chiudere determinate finestre browser alla disconnessione PHP 0
A PHP: come chiudere uno script dopo un certo periodo di tempo? PHP 7
T fatture con voci fattura in php PHP 0
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
M Collegamento tra form html e script php PHP 4
M Problemi con la stampa dei valori in php PHP 1
W [Cerco collaborazioni] Sviluppatore Web (PHP) Offerte e Richieste di Lavoro e/o Collaborazione 0
D passare valori da database sql a php PHP 1
L Ricezione dei dati su file php da modulo html PHP 6
E Inviare variabile a PHP da ciclo in JS Javascript 0
A form PHP prenotazione tramite query PHP 2
A Form php prenotazione di un azienda sanitaria locale presso studio medico PHP 1
F menù select dinamico da db in php PHP 3
L Problemi form Pagina php HTML e CSS 3
L php mysql non salva solo id PHP 21
L php mysql cerca e visualizza pagina PHP 0
F Il codice php è giusto? PHP 2
R Aggiornare record mysql con Ajax, jQuery e php Ajax 2
A invio massivo dati a file php Javascript 4
Z MySql injection PHP PHP 1
V PHP form intersecate PHP 0
I [Offro][Retribuito] Programmatore Php Offerte e Richieste di Lavoro e/o Collaborazione 0
P Funzione jQuery Ajax invio file a php jQuery 1
C Dopo chiusura del tag php la stringa html va a capo PHP 1
E Transaction php PHP 11
B ciclare file xml con PHP PHP 1
L Estrazione dati php Database 6
A Aiuto per pagina php PHP 0
E Php select option e ajax PHP 23
I Aiuto php Dependent Lookup PHP 0
T arretramento versione PHP... PHP 3
D problema php mysql PHP 1
D problema php mysql PHP 1
E Barra di avanzamento codice PHP PHP 4
G creazione menu a tendina e invio a pagina php PHP 1
A inserire variabile php colore in div html PHP 2
Z Video protetto con PHP PHP 0
Z Problema di sincronizzazione PAYPAL con PHP PHP 1
I Eecuzione di javascript in ciclo foreach php. PHP 7
S Libreria PHP per creare file dwg o dxf PHP 0
A [cerco - retribuito] Sviluppatore Php freelance per progetti vari Offerte e Richieste di Lavoro e/o Collaborazione 2
L Google chart php mysql PHP 2
R Download file multipli da directory php PHP 0
F pagina dinamica PHP PHP 3
P Rimozione automatica url da sitemap.xml con PHP PHP 1
L php tinymce mi duplica la classe label PHP 3
S Errore PHP - Notice: Undefined index ... PHP 14
N file manager da php 5 a 7 PHP 15
M Utilizzare la funzione mysql_num_rows() in PHP 5 PHP 3
elpirata Update dinamico informazioni scritte in una pagina php jQuery 11

Discussioni simili