• User Attivo

    Logout senza cambiare pagina

    Ciao a tutti,
    nel mio sito devo implementare il pulsante di logout che quando si clicca richiami il metodo della classe ($user->logout();) e tutto senza ricaricare la pagina. Avevo pensato all'onclick di javascript però non funziona, immagino perchè javascript è interpretato dal client mentre php dal server... sono aperto ai consigli! grazie


  • User Attivo

    e se inserisci l azione del logout in un iframe nascosto?


  • ModSenior

    Ciao owen,

    puoi usare ajax, ma di norma il contenuto della pagina da sloggato non cambia? Quindi sarebbe necessario comunque un reflesh per avere i dati corretti nella pagina.


  • User Attivo

    Puoi creare una pagina php che chiami logout.php.
    Poi al clic del pulsante logout associ un controllo ajax che richiama in modo asincrono la pagina logout.php.
    Una chiamata asincrona ajax ti permette molte cose, tra le quali salvare il contenuto della pagina richiamata.
    A questo punto una scelta saggia sarebbe quella di fare un echo (tipo "ok") su logout.php se la disconnessione è stata effettuata, così salvi il contenuto di logout.php in una variabile, controlli se la variabile ha valore "ok" e in caso dai conferma all'utente dell'avvenuta disconnessione.

    Però sono perfettamente d'accordo con Thedarkita, di solito la pagina nella quale ci si trova cambia il proprio contenuto a seconda se si è loggati o meno, quindi dovresti anche refreshare la pagina: a questo punto fai tutto direttamente in php. 😉

    Anche da un punto di vista dell'usabilità, l'utente si aspetta che ad avvenuta disconnessione accada qualcosa (in genere un redirect alla homepage, o ad una pagina comunque a contenuto pubblico). Se io cliccassi su un pulsante e non accadesse nulla riproverei a cliccare aspettando che accada qualcosa... e questo non va proprio tanto bene... 😉


  • User Attivo

    di norma il contenuto della pagina da sloggato non cambia? si in effetti avete ragione... quindi penso che creerò la pagina logout.php dove effettuo il logout e poi un reindirizzamento automatico alla home... che ne dite di:

    <meta http-equiv="refresh" content="2;url=index.php">
    
    ``` però ho il dubbio che i secondi impostati a due potrebbero creare dei problemi se per qualche motivo il servere non abbia ancora effettuato il logout...

  • User Attivo

    Il codice php viene elaborato dal server che effettua il logout. Solo dopo la pagina viene inviata al client, che la riceve e potrà leggere il meta refresh.

    Quindi puoi stare tranquillo che quando la pagina arriva all'utente il logout è già stato effettuato. 😉

    Mi raccomando, i secondi devono bastare all'utente per leggere il contenuto della pagina: se la pagina è breve vanno bene 2 secondi, altrimenti allunga leggermente il tempo.

    Inoltre ricordati che qualcuno potrebbe aver disattivato i refresh della pagina, quindi inserirei un link testuale con la solita dicitura "Se il browser non ti reindirizza automaticamente entro X secondi, clicca qui per tornare alla pagina principale".


  • User Attivo

    Il codice php viene elaborato dal server che effettua il logout. Solo dopo la pagina viene inviata al client, che la riceve e potrà leggere il meta refresh.

    ...quand'è che inizierò a ragionare???:quote: grazie!