Indice del forum Olimpo Informatico
I Forum di Zeus News
Leggi la newsletter gratuita - Attiva il Menu compatto
 
 FAQFAQ   CercaCerca   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

    Newsletter RSS Facebook Twitter Contatti Ricerca
* JAVASCRIPT/PHP - invocare procedura PHP da JavaScript
Nuovo argomento   Rispondi    Indice del forum -> Linguaggi per Internet
Precedente :: Successivo  
Autore Messaggio
gecko66
Mortale devoto
Mortale devoto


Registrato: 29/11/08 23:57
Messaggi: 11
Residenza: Latina

MessaggioInviato: 02 Feb 2009 22:59    Oggetto: * JAVASCRIPT/PHP - invocare procedura PHP da JavaScript Rispondi citando

ciao a tutti, in breve è questo il mio problema: voglio fare in modo che quando si clicchi sulla x del browser che ospita la mia applicazione, javascript possa intercettare l'evento per poi lanciare in background una procedura scritta in PHP in maniera tale che faccia un update sul db.
L'applicazione in realtà è un'area riservata dove ci sono molte pagine di navigazione scritte in php, tutte si appoggiano sullo stesso template per cui ho pensato di usare l'evento onunload di js ma c'è il difetto che viene eseguito su tutte le pagine. Non vorrei usare ajax, vorrei adottare una soluzione più semplice. Mi potete aiutare ? Grazie 1000 ciao
gc
Top
Profilo Invia messaggio privato
freemind
Supervisor sezione Programmazione
Supervisor sezione Programmazione


Registrato: 04/04/07 20:28
Messaggi: 4643
Residenza: Internet

MessaggioInviato: 03 Feb 2009 20:23    Oggetto: Rispondi citando

Non ho altre idee se non ajax.
Perchè non lo vuoi usare?
Top
Profilo Invia messaggio privato
gecko66
Mortale devoto
Mortale devoto


Registrato: 29/11/08 23:57
Messaggi: 11
Residenza: Latina

MessaggioInviato: 05 Feb 2009 12:13    Oggetto: Rispondi citando

freemind ha scritto:
Non ho altre idee se non ajax.
Perchè non lo vuoi usare?


Ajax non lo conosco, mi sa che mi tocca, ahi .... la pigrizia è una brutta bestia. Cmq,
il problema non è ora chiamare la pagina php di logut su chiusura browser, in questo ajax sicuramente è la soluzione più elegante, il fatto è che le pagine php che compongono l'area riservata si appoggiano su un unico template e che io sappia l'unico modo per intercettare l'evento di chiusura browser cliccando sulla X è quello di specificare l'evento onunload o beforeunload sul body del template, questo significa però che l'evento viene invocato ogni volta che navigo nelle pagine dell'area soci, che ripeto insistono sullo stesso template, e viene quindi eseguito anche lo script di logout. Se mi dici che Ajax risolve anche questo, allora farò come dici e posterò la soluzione oppure se conosci un'altra strada più breve te ne sarò grato. Grazie 1000 per l'interesse, ciao gecko66
Smile
Top
Profilo Invia messaggio privato
freemind
Supervisor sezione Programmazione
Supervisor sezione Programmazione


Registrato: 04/04/07 20:28
Messaggi: 4643
Residenza: Internet

MessaggioInviato: 05 Feb 2009 22:21    Oggetto: Rispondi citando

Non mi è chiara l'implicazione "template => logout".
Se tu nel template hai un link alla pagina logout.php e ovviamente questo link è in tutte le pagine che usano quel template, il logout viene fatto solo quando clicchi il link.
Quindi se è così non vedo il problema: all'evento unload del body fai una chiamata ajax a logout.php, questa farà i fatti suoi.
Puoi al più fare in modo che il logout mandi un response di ok o di errore e a seconda lascierai che il browser faccia il redirect oppure lo blocchi magari con un messaggio "Per cause tecniche il logout non si è concluso con successo..."
Per chiedere chiarimenti su ajax siamo qui per aiutarti...
Top
Profilo Invia messaggio privato
gecko66
Mortale devoto
Mortale devoto


Registrato: 29/11/08 23:57
Messaggi: 11
Residenza: Latina

MessaggioInviato: 05 Feb 2009 22:47    Oggetto: Rispondi citando

Freemind, il template è fatto con dreamweaver, praticamente il codice html che comprende il body lo ereditano tutte le pagine php dell'area riservata e quindi anche l'onunload che viene eseguito sempre durante la navigazione tra queste pagine, praticamente ad ogni passaggio da una pagina all'altra di questa area riservata e che io vorrei evitare, mi piacerebbe che l'esecuzione dell'evento fosse fatta quando l'utente clicca sulla X di chiusura del Browser o cmq anche se non si può impedire la valutazione dell'onunload, sarebbe carino specificare nella funzione js invocata su questo evento delle istruzioni tali dai non far eseguire lo script di logout. Su Ajax accetto volentieri suggerimenti su come pensavate di farlo. Grazie 1000, ciao g Rolling Eyes Wink
Top
Profilo Invia messaggio privato
freemind
Supervisor sezione Programmazione
Supervisor sezione Programmazione


Registrato: 04/04/07 20:28
Messaggi: 4643
Residenza: Internet

MessaggioInviato: 05 Feb 2009 23:44    Oggetto: Rispondi citando

Il template so cosa sia ma non capivo perchè non avevo inteso bene il problema.
Ma sei costretto ad effettuare il logout alla chiusura del browser?
Lavori con le sessioni del browser oppure su db?
Nel primo caso se chiudi il browser distruggi la sessione (ma non se chiudi il tab).
Perchè devi per forza eseguire il logout quando chiudi la finestra (o a questo punto cambi sito)?
Top
Profilo Invia messaggio privato
gecko66
Mortale devoto
Mortale devoto


Registrato: 29/11/08 23:57
Messaggi: 11
Residenza: Latina

MessaggioInviato: 06 Feb 2009 10:04    Oggetto: Rispondi citando

L'obiettivo è quella di monitorare su Db tutte le connessioni a quest'area riservata a cui si accede tramite username e pwd. Questo tracciamento avviene scrivendo in una tabella del db l'accesso all'area e anche l'uscita in caso di logout con bottone applicativo, nel caso di chiusura "forzata", come può essere il click sulla X del browser, il campo della tabella che dovrebbe registrare l'uscita rimane a null. Ho pensato di updatare il campo null al prossimo accesso all'area di un utente qualsiasi facendo un controllo sulle connessioni rimaste appese, campo uscita a null, che abbiamo superato un certo tempo (24 ore), è questa è una possibile strada, però ormai non mi voglio rassegnare al fatto che non esista un'altra soluzione. In giro sulla rete ho trovato questo, che ne dici:
Codice:
<html>
    <head>
var SHOW_BYE = true;

function doUnload() {
    if(SHOW_BYE)
        self.open("Bye.htm", "MioPopup", "width=240,height=300,status");
}

function doClick() {
    SHOW_BYE = false;
}
    </head>
    <body onunload="doUnload()">
        <p><a href="AA.htm" onclick="doClick(); return true">AA</a></p>
    </body>
</html>


Grazie ciao gecko66 Very Happy
Top
Profilo Invia messaggio privato
gecko66
Mortale devoto
Mortale devoto


Registrato: 29/11/08 23:57
Messaggi: 11
Residenza: Latina

MessaggioInviato: 06 Feb 2009 14:05    Oggetto: Rispondi citando

ciao Freemind, ho adattato lo script alle mie esigenze e ho ottenuto quello che volevo. Posto la soluzione sperando di fare cosa gradita.
Questo viene scritto nella pagina Template di Macromedia ed ereditate da tutte le pagine che lo usano:
Codice:
<script type="text/javascript">
var SHOW_BYE = true;
function doUnload() {
    if(SHOW_BYE)
        self.open("logoffX.php", "Popup", "width=240,height=300,status");
}
function doClick() {
    SHOW_BYE = false;
}

<body ....  onUnload="doUnload();">
[...]


Ogni volta che clicco sul link dell'area soci il flag SHOW_BYE viene messo a false così è falsa la condizione e non viene invocata logoffX.php. E' vera solo quando l'utente clicca sulla X del browser:

Codice:
<a href="areasoci.php" onclick="doClick(); return true" class="top_link"><span>Home</span></a></li>
<a href="changepwd.php" onclick="doClick(); return true" class="top_link"><span>Cambio Password</span></a>


Grazie a tutti, ciao Very Happy
gecko66
Top
Profilo Invia messaggio privato
freemind
Supervisor sezione Programmazione
Supervisor sezione Programmazione


Registrato: 04/04/07 20:28
Messaggi: 4643
Residenza: Internet

MessaggioInviato: 07 Feb 2009 17:45    Oggetto: Rispondi citando

Ciao!
sinceramente non avevo mai pensato a una soluzione di questo tipo ma mi piace.
Io di solito gestisco come avevi ipotizzato tu, un db e una procedura di pulizia che viene chiamata ogni volta si esegue una pagina nella zona riservata.
Questo giro del flag di javascript mi piace.
Sicuramente hai fatto un grosso piacere a tutti qui sul forum postando la soluzione.
Grazie
Top
Profilo Invia messaggio privato
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 11:16
Messaggi: 11568
Residenza: Tokelau

MessaggioInviato: 09 Feb 2009 14:37    Oggetto: Rispondi citando

Boh, seriamente io userei le sessioni e basta. Quando una sessione scade avviene il logout. Se uno chiude il browser la sessione rimane aperta fino al timeout. Come su questo forum e come in tantissimi siti.
Top
Profilo Invia messaggio privato HomePage
mdweb
Dio maturo
Dio maturo


Registrato: 18/12/07 15:59
Messaggi: 4412

MessaggioInviato: 09 Feb 2009 20:17    Oggetto: Rispondi citando

SverX ha scritto:
Boh, seriamente io userei le sessioni e basta. Quando una sessione scade avviene il logout. Se uno chiude il browser la sessione rimane aperta fino al timeout. Come su questo forum e come in tantissimi siti.

ti quoto SverX Wink
Top
Profilo Invia messaggio privato
freemind
Supervisor sezione Programmazione
Supervisor sezione Programmazione


Registrato: 04/04/07 20:28
Messaggi: 4643
Residenza: Internet

MessaggioInviato: 09 Feb 2009 22:18    Oggetto: Rispondi citando

Di norma pure io la vedo così ma se occorre monitorare costantemente chi è connesso e comunque dover implementare dei logout forzati come fai con solo le sessioni?
Top
Profilo Invia messaggio privato
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 11:16
Messaggi: 11568
Residenza: Tokelau

MessaggioInviato: 10 Feb 2009 10:31    Oggetto: Rispondi citando

freemind ha scritto:
Di norma pure io la vedo così ma se occorre monitorare costantemente chi è connesso e comunque dover implementare dei logout forzati come fai con solo le sessioni?


Se occorre tutto questo, http non è la strada. Razz
Top
Profilo Invia messaggio privato HomePage
freemind
Supervisor sezione Programmazione
Supervisor sezione Programmazione


Registrato: 04/04/07 20:28
Messaggi: 4643
Residenza: Internet

MessaggioInviato: 10 Feb 2009 12:18    Oggetto: Rispondi citando

SverX ha scritto:
freemind ha scritto:
Di norma pure io la vedo così ma se occorre monitorare costantemente chi è connesso e comunque dover implementare dei logout forzati come fai con solo le sessioni?


Se occorre tutto questo, http non è la strada. Razz

Beh scusa, però tu che cosa useresti?
Se uno ha necessità di un applicativo web based che implementi questa cosa non vedo perchè non debba passare per http se è solo questo il problema.
Cioè, non vedo molto sbattimento a gestire a mano una sessione di login appoggiandosi ad un db e così facendo si ottengono piccoli vantaggi.
Poi e chiaro che nel caso medio non è solo il dover beccare puntualmente il logout della persona a necessitare il monitoraggio continuo e allora lì il discorso cambia.
La soluzione trovata da gecko66 mi sembra buona, probabilmente presto (se tutto va bene) inizierò a scrivere appunto una webapp che dovrà utilizzarla per evitare di avere momenti di "utente connesso" quando invece non lo è.
Top
Profilo Invia messaggio privato
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 11:16
Messaggi: 11568
Residenza: Tokelau

MessaggioInviato: 10 Feb 2009 15:00    Oggetto: Rispondi citando

non sto dicendo "non si deve fare!", dico solo che è quantomeno curioso che si pretenda di gestire una connessione da un protocollo senza connessione. Uno si dovrebbe accontentare delle sessioni, o cambiare protocollo.

Se si pianta il PC/browser, chi chiude la sessione? Se il mio browser non supporta Javascript? Se voglio chiudere la finestra ma non la sessione o il browser? Se mi scollego da Internet? Se si stacca il cavetto? Capisci...

Comunque se mi dicessero "ti paghiamo, fai quello che puoi" farei così. Ma se mi dicessero "abbiamo bisogno di un sistema... [...] ... e che vada su http" direi "che, scherzate?" Smile
Top
Profilo Invia messaggio privato HomePage
freemind
Supervisor sezione Programmazione
Supervisor sezione Programmazione


Registrato: 04/04/07 20:28
Messaggi: 4643
Residenza: Internet

MessaggioInviato: 10 Feb 2009 15:30    Oggetto: Rispondi citando

Quello che dici è corretto infatti anche io più o meno la penso come te.
Però se alla fine uno ha bisogno del web-based non è che ci sono tante alternative, si potrebbe passare per Java lato server e giocare di applet sul client però alla fine sarebbe un po' più pesante.
Se non è richiesto il web-based la vedo come te, però se è fondamentale allora credo che un giusto compromesso sia la sessione su db e la "pulizia" fatta dopo un timeout.
Top
Profilo Invia messaggio privato
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 11:16
Messaggi: 11568
Residenza: Tokelau

MessaggioInviato: 10 Feb 2009 16:17    Oggetto: Rispondi citando

freemind ha scritto:
Però se alla fine uno ha bisogno del web-based ...


E' questo che discuto. Il più delle volte è che:
- uno non ne ha davvero bisogno (confonde Internet e il Web. Gli serve una applicazione net-aware e pensa che debba essere un sito web)
- ne ha bisogno ma vuole che funzioni in un altro modo (ignoranza riguardo il Web)

se uno ha bisogno davvero del web-based gli si insegna come si lavora in questo campo, a fare come vuole chi non sa come deve funzionare si finisce solo per perdere un sacco di tempo e non ottenere niente, in molti casi.
Top
Profilo Invia messaggio privato HomePage
freemind
Supervisor sezione Programmazione
Supervisor sezione Programmazione


Registrato: 04/04/07 20:28
Messaggi: 4643
Residenza: Internet

MessaggioInviato: 10 Feb 2009 16:51    Oggetto: Rispondi

SverX ha scritto:
freemind ha scritto:
Però se alla fine uno ha bisogno del web-based ...


E' questo che discuto. Il più delle volte è che:
- uno non ne ha davvero bisogno (confonde Internet e il Web. Gli serve una applicazione net-aware e pensa che debba essere un sito web)
- ne ha bisogno ma vuole che funzioni in un altro modo (ignoranza riguardo il Web)

se uno ha bisogno davvero del web-based gli si insegna come si lavora in questo campo, a fare come vuole chi non sa come deve funzionare si finisce solo per perdere un sacco di tempo e non ottenere niente, in molti casi.

Ecco, è qui che volevo arrivare.
Effettivamente spesso la gente identifica internet con il web e quindi con un sito.
Io su questo non pensa neppure ci sia da discutere! E' esattamente come dici tu.
Però a volte capita di dover creare un sistema misto web/net-aware e a questo punto bisogna vedere anche economicamente cosa costa meno per te e per il cliente (ossia per guadagnarci entrambi). In un caso del genere cosa conviene? Secondo me dipende da quanto è preponderante la parte web rispetto a quella "gestionale".
Se alla fine prevale la prima penso che il discorso che ho fatto io sia più che valido, nell'altro caso assolutamente no: ci vogliono altri strumenti a costo di scriversi a manina un protocollo di comunicazione (anche se spesso non si arriva a tanto...).
Indubbiamente oggi con ajax & co il concetto di sito sta snaturando...
Top
Profilo Invia messaggio privato
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Linguaggi per Internet Tutti i fusi orari sono GMT + 1 ora
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi