Domanda

Il mio problema è che il tasto posteriore fa sì che il browser per dire qualcosa come "Pagina scaduto" quando la pagina precedente è stato creato da un modulo.

Esempio:

  • page1: form inviato con la ricerca Caratteristiche ($ _POST richiesta, sotto forma punti per page2)
  • Pagina2: riceve $ _POST richiesta e Risultato Show (elenco di utenti con i link, punti a pagina 3)
  • Pagina3: Mostra il profilo utente

Ora, quando il visitatore clicca sul pulsante Indietro nel browser mostrerà qualcosa come "Pagina scaduto".

Al posto della pagina precedente dovrebbe essere mostrato senza avvisi (pagina 2, con la lista utenti)

Come sono le vostre strategie per aggirare questo comportamento?

È stato utile?

Soluzione

Se si invia un per con parametri di ricerca, si sta cercando di alcuni dati, non modificano un po '.

Quindi, si dovrebbe utilizzare il metodo HTTP GET, e non POST: POST deve essere utilizzato quando si intende creare / modificare i dati, e ottenere dovrebbe essere usato quando si ha intenzione di recuperare alcuni dati

.


Oppure, se avete un po 'di creare / modificare operazione che deve essere fatto:

  • Il form primi post ad una prima pagina
    • Quella pagina fa alcune operazioni (come scrivere qualcosa a un database)
    • E poi reindirizza a un'altra pagina, con un colpo di testa Location HTTP.
  • E 'che l'ultima pagina, che è interrogazioni da parte del browser utilizzando un GET richieste, che visualizza i dati recuperati dai parametri ricevuti nella URL.

Vedere la Post / Redirect / Get pagina su wikipedia, su questo.

Altri suggerimenti

Invia un colpo di testa Location nello script che avete inviato a, indicando la pagina che viene dopo.

Non utilizzare POST per la ricerca. Ricerca può tranquillamente essere fatto con GET in quanto non altera nulla.

Questo vale per PHP e IE8.

Non solo si deve impostare il caching, a privati, ma è necessario rimuovere le 4 intestazioni di cache e questo può essere fatto solo con PHP 5.3. In PHP 5.2 è possibile impostare solo i 4 intestazioni di valori vuoti se si utilizza il metodo di Zend Framework SetHeader (). Per qualche motivo non è sufficiente per impostare IE8 4 valori di intestazione per valori vuoti. Ecco il codice per PHP 5.3:

    header_remove("Expires");
    header_remove("Cache-Control");
    header_remove("Pragma");
    header_remove("Last-Modified");

È possibile utilizzare la sessione per fare questo.

ad es.

$ _ SESSION [ 'name'] = $ _POST [ 'name'];

Ricordate di disinserire le variabili dopo che il processo è completato per ottimizzare l'utilizzo della memoria.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top