0

pq meu form de cadastro, qdo gera uma pagina de erro nao recupera os dados clicando no botao voltar, alguem sabe pq?

criado por Thiago Fraga Oriente da Silva em 26/03/2004 3:18pm
Nenhuma descrição foi enviada.

Lista de Respostas:

0
29/03/2004 6:12am
(~20 anos atrás)
Alessander Thomaz respondeu:
Na verdade é mera questão de configuração. Alguns browsers trazem o valor, outros não. Mas nem sempre podemos contar com configurações do cliente.

O problema que deve estar passando é ao usar o comando javascript history.back() ou history.go(-1) a página volta vazia.

Isso acontece pois o history.back() retorna a página anterior, mostrando o que está em cache. E quando o navegador adiciona a página em cache ele faz antes de digitar valores.

É muito comum ocorrer mensagens de sessão expirada nesses casos, devido ao mesmo problema.

A solução?
É desanimador o que irei dizer, ainda mais se tiver um sistema grande desenvolvido, mas a única solução que sempre funcionará é não usar o history.back().

Nesse caso ao clicar em voltar, você terá que fazer um mecanismo que envie todas as variáveis para o form de cadastro e por sua vez, programar o form de cadastro para receber essas variáveis caso algum erro ocorra.

Ex:

Nome
[ ]

Idade
[ ]

[Enviar]

ao enviar o formulario com nome e idade você faz uma validação e vê que já existe esse nome cadastrado.
Então coloca na tela um botão voltar para ir ao cadastro.

Esse botão voltar faça ser um submit, se form uma imagem pode usar.
javascript:document.nomedoformulario.submit()

colocando um form com campos hidden (ocultos) contendo o valor dos campos.


<form name="form">
<input type="hidden" name="nome" value="<?=$nome?">
<input type="hidden" name="idade" value="<?=$idade?">
<input type="submit" name="submit" value="Voltar">
</form>

Um exemplo simples, mas a idéia é reenviar os dados.
Espero ter ajudado.

Grande abraço,
Alessander Thomaz









0
03/04/2004 3:56pm
(~20 anos atrás)
Quando tenho um form que tem muitos dados, do tipo cadastral, gosto de estocar os dados em cookies assim que o cara da um submit para que se ele cair, ou alguem erro acontecer, ele pode voltar ao form que os dados dele estarao la, mesmo se ele trocar o ip, ou algo mais acontecer. So da errado se ele deletar os cookies no meio do processo, o que e bem improvavel.

0
26/04/2004 2:42pm
(~20 anos atrás)
Diogo Gomes respondeu:
Uma substituição pros cookies seria usar session...

0
27/04/2004 12:34pm
(~20 anos atrás)
Quando trabalho com form, eu faço a validação e a inserção no BD geralmente na mesma página. Ex:

<?

if ($nome != "" and $mail != "") //só para verificar se nenhum campo ficou vazio
{
$arroba = "@";
$ValMail = substr_count($mail,$arroba);

/* a função sustr_count, conta quanta vezes o caracter aparece na string,
neste caso a usamos para verificar se o caracter @ aparece mais de uma vez
ou não aparece na string, assim validando um e-mail */

if ($ValMail != 1)
{
$erro = "E-mail inválido";
}
else
{
header ("location: proxima_pagina.php");
}
/* Se todos os campos forem válidos, ele redireciona para uma próxima página
caso contrário, retorna a mesma com a mensagem de erro */
}
?>

<html>

<head>
<title> Validação de form </title>
</head>

<body>
<?
echo "".$erro."";
?>
<form method="post" action="<? $PHP_SELF ?>" name="valida">
Nome:
<br>
<input type="text" name="nome" size="30" maxlength="50" value="<? echo $nome ?>"> <!--o value é que vai imprimir o valor novamente postado -->
<br>
E-mail:
<br>
<input type="text" name="mail" size="30" maxlength="50" value="<? echo $mail ?>">
<br>
<input type="submit" name="validadar" value="Validar e-mail">
</form>

</body>
</html>

0
27/04/2004 1:27pm
(~20 anos atrás)
Só complementando, da forma acima mostrada, ele exibirá todos os dados enviados, pois, ele foram enviados para a mesma página.

[]'s

Edson Marco

Nova Resposta:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)