nel mio sito sto cercando di fare in modo che quando un utente abbandona il sito per un altro, o chiude la finestra del browser, deve chiudere in automatico la sessione. Ho usato questo sistema:
ho creato 3 pagine sviluppate così:
1) monitoraggio.asp
<script type="text/javascript">
<!--
function openchk() {
cartella = location.pathname;
opzioni = 'width=100,height=100,top=0';
window.open('chkout.htm?'+cartella,'ctrout',opzion i);
}
//-->
</script>
<html>
<head>
<title>monitoraggio sessione</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body onUnload="openchk();">
</body>
</html>
... inserito tramite un file include in ogni script di ogni pagine del sito
2) chkout.htm
<script type="text/javascript">
<!-- // (c) br1 - 2002
prossima = "chiudi_sessione.asp";
cartella = location.search.substr(1);
messaggi = true;
if (opener.closed) {
if (messaggi)
c_logout();
} else {
opener.focus();
from = opener.location;
if (typeof(from.href)=="unknown") {
if (messaggi)
c_logout();
} else if (cartella!=""&&from.href.indexOf(cartella)>0) {
if (messaggi)
c_logout();
} else {
top.close();
}
}
// ----------------------------
function c_logout() {
if (prossima!="") {
location.href=prossima;
} else {
top.close();
}
}
//-->
</script>
<html>
<head>
<title>Documento senza titolo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
</body>
</html>
3) chiudisesisone.asp
<% @ Language=VBScript %>
<% Option Explicit %>
<% Session.Abandon %>
<script>
window.close();
</script>
<html>
<head>
<title>chiudi sessioni</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
</body>
</html>
tutte queste pagine si trovano nella radice del sito.
La pagina che esegue il monitoraggio sul sito funziona bene sino a quando si visitano le pagine che si trovano nella radice del sito, come si va in una sottocartella, in tale pagina si verifica l'errore 404 di pagina non trovata che è una brutta cosa a vedere... a volte capite anche che si chiude la sessione improvvisamente o quando si aggiorna la pagina.
Come si potrebbe risolvere il problema? ci sono altre tecniche a tal riguardo?