Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Incubo pulsante indietro del broswer

    Ciao a tutti, dopo aver inviato un form ed eseguito una determinata funzione, se inavvertitamente clicco su "indietro" tramite browser, la pagina mi reinvia nuovamente il form.. Esempio:

    A.php contiene il form che punta a B.php

    B.php esegue lo script ed esegue un redirect in A.php

    Se clicco però su "indietro" col pulsante del browser, torno a B.php, ri-esegue lo script per la seconda volta e torna nuovamente in A.php.. come mi consigliate di risolvere? Grazie come sempre

  2. #2
    Ps. anche mettendo tutto in un'unica pagina non cambia granchè..

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2015
    Messaggi
    43
    Ciao,

    ti propongo una delle possibili soluzioni, forse la più semplice e allo stesso tempo la meno onerosa:

    A.php invoca C.php passandogli un parametro GET o POST.
    C.php valuta se il parametro è settato e, solo in tal caso, include ed esegue il codice di B.php.

    Se effettui il "Back" da C.php, tornerai alla pagina A.php. Se invochi C.php in un altro contesto non disporrai del parametro settato quindi B.php non verrà eseguito.

  4. #4
    Grazie per la risposta, sì avevo già pensato ad una soluzione con una terza pagina che farebbe "da spalla", ma i form sono tanti e dovrei creare una pagina per ognuno.. Comunque dopo vari esperimenti, al momento sembra abbia risolto aggiungendo un redirect alla fine di ogni script e non so perchè ma funziona..

    EDIT: forse funziona perchè ho messo tutto in un'unica pagina (A.php): il form, lo script e il redirect alla stessa pagina A.php..

    Boh non so dire x certo se dipende da questo e se ho fatto bene a far così
    Ultima modifica di magic_key; 23-03-2015 a 18:53

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2015
    Messaggi
    43
    Nella soluzione che ti ho proposto non è necessario definire una pagina in più.
    Le uniche pagine necessarie sono A.php e C.php.

    B.php può essere inclusa in C.php oppure può essere invocata esternamente ed essere utilizzata in comune da più pagine.

  6. #6
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Il problema di partenza mi sembra piuttosto strano. Come li fai questi redirect?

  7. #7
    Ho impostato il tutto come nell'allegato a questo post. In questo modo, se clicco su "indietro" o "aggiorna pagina" tramite browser, evito il reinvio del form.. può sembrare strano ma funziona..
    File allegati File allegati

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2015
    Messaggi
    43
    Segue lo stesso principio che ti ho indicato sopra ma il redirect, in questo caso, effettua una richiesta in più.

    codice:
    if(isset($_POST['submit']))
        {
        @header("location:A.php");
        }
    A.php contatta B.php che effettua un redirect verso C.php. Poi viene premuto il tasto "Back" e si torna a B.php che effettua un redirect verso A.php perchè riconosce che non è stato contattato da A.php (il parametro SUBMIT non risulta settato).

    In questo modo il Back deve chiedere 2 pagine (B.php e poi A.php) quindi non risulta ottimizzato. Se rivedi la mia soluzione (basata sullo stesso principio) vedrai che il Back è diretto su A.php e non richiede un redirect aggiuntivo.
    Ultima modifica di LsKoder; 25-03-2015 a 10:50

  9. #9
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Quote Originariamente inviata da LsKoder Visualizza il messaggio
    A.php contatta B.php che effettua un redirect verso C.php. Poi viene premuto il tasto "Back" e si torna a B.php che effettua un redirect verso A.php perchè riconosce che non è stato contattato da A.php (il parametro SUBMIT non risulta settato).
    No. Se B fa redirect su C non rimane nella history, e il back da C ritorna direttamente ad A

  10. #10
    Utente di HTML.it
    Registrato dal
    Mar 2015
    Messaggi
    43
    Quote Originariamente inviata da luca200 Visualizza il messaggio
    No. Se B fa redirect su C non rimane nella history, e il back da C ritorna direttamente ad A
    Hai ragione, ho rivisto il codice che ha postato e il redirect viene fatto a livello server (ragionavo considerando un redirect html)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.