- Home
- Categorie
- Coding e Sistemistica
- PHP
- Intercettare l'evento onClose dell'oggetto window
-
ho cercato su internet e la cosa che mi potrebbe aiutare è il "onUnload". Beneora vi esporto prima il codice e poi vi spiego il mio problema
<? include '../connessione.php'; session_name('login'); session_start(); //si inizia o continua la sessione //dati del pg $login_user=$_SESSION['user']; $pass_user=$_SESSION['pass']; //passwd $id=$_SESSION['id']; $redirect="http://127.0.0.1/lumamo/index.php"; //indirizzo assoluto della pagina di login //gestione della sessione nel caso in cui i cookie sono disabilitati if(IsSet($_POST['PHPSESSID']) && !IsSet($_COOKIE['PHPSESSID'])) { $PHPSESSID=$_POST['PHPSESSID']; header("Location: $redirect?PHPSESSID=$PHPSESSID"); //si ricarica la pagina di login } //setto il flag dell'on if(IsSet($login_user) && IsSet($pass_user) && IsSet($id)) { $query = "SELECT * FROM utenti WHERE ID = '$id'"; # controlla se l'id è inserito nel database $result = mysql_query($query); if (mysql_num_rows($result) > 0) { mysql_query("UPDATE utenti SET on_off = 1 WHERE ID = '$id'"); } } //logout if($_SESSION['logout'] == 1) { $_SESSION=array(); // Desetta tutte le variabili di sessione. session_destroy(); //DISTRUGGE la sessione. if(IsSet($login_user) && IsSet($pass_user) && IsSet($id)) { $query = "SELECT * FROM utenti WHERE ID = '$id'"; # controlla se l'id è inserito nel database $result = mysql_query($query); if (mysql_num_rows($result) > 0) { mysql_query("UPDATE utenti SET on_off = 0 WHERE ID = '$id'"); } } if(IsSet($_COOKIE['sav_user'])) //se presente si distrugge il cookie di login automatico setcookie("sav_user",$cok,time()-31536000); echo "Arrivederci e alla prossima"; exit; //si termina lo script in modo da ritornare alla schermata di login } ?> <html> <head> <title>Ben venuto <? echo $_SESSION['razza']; echo " || "; echo $_SESSION['user']; ?></title> <script language="JavaScript" type="text/javascript"> function close_land() { $_SESSION['logout']=1; logout=window.open("./frame.php","nuova","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,width=300,height=200); } </script> </head> <frameset rows="15%,*" cols="*" frameborder="NO" border="0" framespacing="0" onUnload="close_land()"> <frame src="testa.php" name="topFrame" scrolling="NO" noresize> <frameset cols="*,20%" frameborder="NO" border="0" framespacing="0" > <frame src="mappa.php" name="mainFrame"> <frame src="menu.php" name="menu" scrolling="NO" noresize> </frameset> </frameset> <noframes> <body> </body> </noframes> </html>
il problemino riscontrato è quello che quando chiudo non mi apre la nuova pagina che mi permette il loguot... mi sapreste dire dov'è l'errore? (il nUnload="close_land()" ho provato a metterlo anche nel body... ma nn funge...) gazie per la risposta ^_^
-
Ciao,
hai provato ad attivare la funzione su onbeforeunload anziché sull'onload .. sul tag body funziona sicuramente.. non lo so per certo su frameset.
-
nn funge neanche quello... ora mi chiedo... potrebbe esser perché lavoro in locale?
-
no neanche on line... provo come hai detto te
-
nulla da fare... ho provato tutte le combinazioni possibili ma niente... aiutoooooooooooooooooooooooooooooo
-
ma hai provato a far attivare l'evento dirattamente sul tag body della pagina in questione?
-
Secondo me non funziona perché va in errore...
Stai usando IE oppure Firefox? Hai aperto la console javascript per controllare gli errori?
La riga $_SESSION è sbagliata perché l'hai scritta dentro un javascript mentre sicuramente intedevi valorizzare un parametro in PHP.
function close_land()
{ $_SESSION['logout']=1;
logout=window.open("./frame.php","nuova","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,width=300,height=200);
}
-
quello che dice inuyaksa è vero... ora invece ho provato a fa quest'altra cosa:
. . . <html> <head> <title>Ben venuto <? echo $_SESSION['razza']; echo " || "; echo $_SESSION['user']; ?></title> </head> <frameset rows="15%,*" cols="*" frameborder="NO" border="0" framespacing="0"> <frame src="testa.php" name="topFrame" scrolling="NO" noresize> <frameset cols="*,20%" frameborder="NO" border="0" framespacing="0" > <frame src="mappa.php" name="mainFrame"> <frame src="menu.php" name="menu" scrolling="NO" noresize> </frameset> </frameset> <noframes> <body onUnload="window.open('loguot.php','logout','resizable=no,width=300,height=200');"> </body> </noframes> </html>
ma uguale non me apre quest'altre benedetta pagina. come si apre la console javascript?
-
Usa la forza mio giovane Padauan...
googgolando un po' ho trovato questo guida...
http://javascript.html.it/guide/lezione/873/il-debugger-trovare-gli-errori/
-
scusa... ma tu stai mettendo l'event catcher associato al body alternativo ai frame, per forza non va.. quello che di cevo io, e che di sicuro funzia perchè la uso da tempo, è mettere l'onbeforeunload sul tag body di una delle pagine caricate nei frame.
-
ragazzi non era un problema di sintassi o che altro... è che io sono un tontolo xD avevo i popup erano bloccati xD ora funziona! vi ringrazio tutti ^_^
(e come dice la mia prof di sistemi: prima di pensare in grande controllare che le cose più piccole siano ok)