Botão Voltar para reenviar dados do formulário ($_POST)
Pergunta
Meu problema é que o botão Voltar faz com que o navegador diga algo como "Página expirada" quando a página anterior foi criada por um formulário.
Exemplo:
- Página 1:Formulário enviado com critérios de pesquisa (solicitação $ _Post, o formulário aponta para a página2)
- página 2:Recebe a solicitação $ _Post e o resultado (lista de usuários com links, pontos para a página3)
- página3:Mostrar perfil do usuário
Agora, quando o visitante clicar no botão Voltar do navegador, será exibido algo como “Página expirada”.
Em vez disso, a página anterior deve ser mostrada sem avisos (página2, com a lista de usuários)
Como estão suas estratégias para contornar esse comportamento?
Solução
Se você está enviando um para os parâmetros de pesquisa, está tentando pegue Alguns dados, não modificam alguns.
Portanto, você deve usar o método HTTP GET, e não postar: a postagem deve ser usada quando você pretende criar/modificar dados e obter deve ser usado quando você pretende buscar alguns dados.
Ou, se você tiver alguma operação de criação/modificação que deve ser feita:
- O formulário primeiro posts em uma primeira página
- Essa página faz algumas operações (como escrever algo em um banco de dados)
- E depois redireciona para outra página, usando um
Location
Cabeçalho HTTP.
- É essa última página, que são consultas pelo navegador usando solicitações GET, que exibe os dados obtidos a partir dos parâmetros recebidos no URL.
Veja o Postar/redirecionar/obter Página na Wikipedia, sobre isso.
Outras dicas
Eu fiz isso usando uma coluna em uma lista do SharePoint e a funcionalidade de "Lookups de fluxo de trabalho".Eu criei uma lista "wfcontactslist" com uma coluna "Ccemail. Nota que isso precisa estar no mesmo coletor de site que a lista que terá o fluxo de trabalho associado. Na coluna" Ccemail ", você pode ter mais de um email (que representa meugrupo) Ao separar e-mails com um semi-dois. Um bônus para mim é que eu possa alterar facilmente indivíduos no grupo CC, editando meu WFContactSlist. Espero que ajude.
Não use postagem para pesquisa. A pesquisa pode ser feita com segurança, pois não alterará nada.
Isso se aplica ao PHP e IE8.
Você não apenas deve definir o cache para privado, mas também deve remover os 4 cabeçalhos de cache e isso só pode ser feito com o PHP 5.3. No Php 5.2, você pode definir apenas os 4 cabeçalhos como valores em branco se estiver usando o método setheader () da Zend Framework. Por algum motivo, não é suficiente no IE8 para definir os 4 valores de cabeçalho para valores vazios. Aqui está o código para Php 5.3:
header_remove("Expires");
header_remove("Cache-Control");
header_remove("Pragma");
header_remove("Last-Modified");
Você pode usar a sessão para fazer isso.
por exemplo.
$_SESSION['nome'] = $_POST['nome'];
Lembre-se de cancelar a configuração de suas variáveis após a conclusão do processo para otimizar o uso da memória.