Ir para conteúdo
Fórum Script Brasil
  • 0

Session, Validação...


aRob

Pergunta

Ola,

duvidas...

preciso de ajuda para montar um esquema de validação de dados de um formulário, já pesquisei bastante a respeito, vi os scripts sobre validação aqui do fórum e muita outra coisa a respeito na net, mas está complicado... a validação esta OK, mas oque eu quero é redirecionar o usuário devolta para a pagina do formulário caso o dado infomado seja invalido, me parece que poderia fazer isso com SESSION, mas não entendi isso muito bem, vou colocar um exemplo com apenas 2 campos no fomrulario para não complicar...

Arquivo do formulário de envio...

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
<form action="envia.php" method="post">
Nome: <input type="text" name="nome" size="20" value="" />
Email: <input type="text" name="email" size="20" value="" />
<input type="submit" name="validar" value="validar" />
</form>
<br /><br />
<body>
</body>
</html>
o arquivo que faz a validação:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
<?php
$nome = $_POST['nome'];

$email = trim(@$_REQUEST['email']);

if ($email) {
    if (preg_match ("/^[A-Za-z0-9]+([_.-][A-Za-z0-9]+)*@[A-Za-z0-9]+([_.-][A-Za-z0-9]+)*\\.[A-Za-z0-9]{2,4}$/", $email)) {
        echo "O e-mail válido!";
    } else {
        echo "O e-mail é inválido";
    }
}

?>
<body>
</body>
</html>

Ai esta apenas um exemplo... que por sinal funciona muito bem.. mas o que eu quero é mais complicado,

digamos que o e-mail seja valido, ok então ao invés de imprimir isso para o usuário vou guardar essa confirmação numa variável para posteriormente caso seja verdadeira vai ter uma parte no script que vai enviar um e-mail para o administrador do site com os demais dados do formulário completo.... até ai tudo bem...

MAS e se a validação retornar FALSE, o que e como posso fazer para:

- Retornar ao formulário mas continuar com o valor que o usuário inserio no campo "nome";

- Informar ao lado do campo do email que ele foi digitado incorretamente e deve ser digitado novamente, e ainda estar com o seu campo limpo;

Me parece que isso pode ser feito usando sessoes, mas será que aguem poderia me dar um exemplo usando estes dois campos?

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Pura lógica isso... só lembrando que os 2 arquivos terão que ser .php:

1 - Formulário (chamei de y.php)

<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
<form action="x.php" method="post">
Nome: <input type="text" name="nome" size="20" value="<?php echo $_SESSION['nome'];?>" />
Email: <input type="text" name="email" size="20" value="" /><?php echo $_SESSION['mensagem'];?>
<input type="submit" name="validar" value="validar" />
</form>
<br /><br />
<body>
</body>
</html>
<?php
unset ($_SESSION['nome']);
unset ($_SESSION['mensagem']);
?>
2 - Action do formulário (chamei de x.php):
<?php
session_start();
ob_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
<?php
$nome = $_POST['nome'];

$email = trim(@$_REQUEST['email']);

if ($email) {
    if (preg_match ("/^[A-Za-z0-9]+([_.-][A-Za-z0-9]+)*@[A-Za-z0-9]+([_.-][A-Za-z0-9]+)*\\.[A-Za-z0-9]{2,4}$/", $email)) {
        echo "O e-mail válido!";
    } else {
    $_SESSION['mensagem'] = "Você deve digitar o e-mail de forma correta";
    $_SESSION['nome'] = $nome;
    header("Location:y.php");
    }
}

?>
<body>
</body>
</html>
<?php
ob_end_flush();
?>

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...