Pergunta

Eu tenho buy.php com um forma onde você entra itens, quantidade, dados de envio, etc.

Quando você clica no Botão de envio, ele posta de volta para buy.php ($_SERVER['PHP_SELF']) e faz alguma validação de dados.

Se houver campos faltando ou erros, eles serão destacados.Se tudo estiver correto, eu salvo o $_POST dados em $_SESSION variáveis, então faça um header('Location: check.php'), onde exibo os dados para que o comprador possa verificar as informações uma última vez antes de realmente comprar.

Agora, se eu estiver dentro check.php e aperte o botão Voltar para buy.php para que eu possa alterar as coisas, o navegador pergunta se desejo reenviar os dados do POST.Estou tentando evitar isso.

Alguém tem algum bom conselho ou boas práticas para validação do PHP Multiform?

Além disso, se eu tivesse n páginas para o usuário preencher, buy.php, buy2.php, ... buyn.php antes de check.php as mesmas ideias ainda seriam válidas?

Foi útil?

Solução

Você poderia fazer um redirecionamento para buy.php depois de salvar no objeto de sessão, que então redireciona o servidor para check.php, isso significaria que quando o usuário clicar de volta, ele voltará para a solicitação GET e não para a solicitação POST

Outras dicas

Sim - concordo com o acima.EU SEMPRE faço um redir longe da última postagem, então clicar em voltar os devolve sem esse erro OU reenvios.também evita complicações.você sempre pode marcar o redir página de link com um ?m ou &m (ou seja: page.php?m) e tem isto no topo da página:(usar elseif Depois disso)

if (isset($_GET['m'])) {
  echo 'order placed.';
}
else {
  //...
}

Você também pode ter tudo em uma página.Basta nomear os botões de envio submit1, submit2, como:(tenha em mente que se você usar uma imagem para envios, ela se tornará $_POST['submit1_x'] :)

if (isset($_POST[submit1]) {
  //validate + save session data from form1
  //display form 2
} else if(isset($_POST[submit2])) {
  //validate + save session data from form2
  //display form 3
} else {
  //display first form
  //<input type="submit" name="submit1" value="Continue">
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top