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

Problema cadastramento


lucasw´p

Pergunta

Bem, não é um sistema de cadastramento de verdade, nem usa banco de dados, é só porque eu to aprendendo mesmo :P

-----cadastra_inicial.php

<h1 align="center"><font color="blue">Cadastrar - Inicial</font></h1>

<form method="POST" action="cadastra_final.php">

Nome: <input type="text" name="nome"><br>

Sobrenome: <input type="text" name="sobrenome"><br>

Você é de maior? <select name="maior" size="1">

<option value="sim">Sim</option><option value="não">Não</option></select><br>

E-mail: <input type="text" name="email"><br>

<input type="submit" value="Prosseguir"> <input type="reset" value="Limpar">

</form>

-----cadastra_final.php

<html><body><?php

$nome = $_POST["nome"];

$sobre = $_POST["sobrenome"];

$maior = $_POST["maior"];

$email = $_POST["email"];

$erro=0;

if (strlen($nome)<5){

echo "Seu nome deve conter mais que 5 caracteres!";

$erro=1;}

elseif ($maior == "não"){

echo "Você deve ter mais de 18 anos!";$erro=1;}

elseif (strstr($email,"@")==FALSE){

echo "Digite um e-mail valido";$erro=1;}

elseif ($erro==0){}

?>

<h1 align=center"><font color="blue">Cadastrar - Final</font></h1>

<form method="POST" action="final.php">

<input type="hidden" name="nome" value=\"<?php echo $nome; ?>">

<input type="hidden" name="sobrenome" value="<?php echo $sobre; ?>">

<input type="hidden" name="maior" value="<?php echo $maior; ?>">

<input type="hidden" name="email" value="<?php echo $email; ?>">

Senha: <input type="password" name="senha"><br>

Digite novamente a senha: <input type="password" name="n_senha"><input type="submit" value="Ultimo passo">

</form>

</body></html>

-------final.php

<?php

$senha = $_POST["senha];

$n_senha = $_POST["n_senha"];

$nome = $_POST["nome"];

$sobre = $_POST["sobrenome"];

$maior = $_POST["maior"];

$email = $_POST["email"];

$erro=0;

if ($senha != $n_senha){

echo "Você deve digitar a mesma senha nos dois campos";$erro=1;}

elseif (empty($senha) OR empty($n_senha)){ echo "Você deve digitar uma senha!"; $erro=1;}

elseif (strlen($senha)<5){ echo "A senha ter de ter mais de 5 caracteres!"; $erro=1;}

elseif (strlen($senha)>12){ echo "A senha ter de ter menos de 12 caracteres!"; $erro=1;}

elseif ($erro == 0){ echo "Parabens, você criou sua conta!<br>Aqui estão seus dados:<br> Nome: $nome $sobre<br>

Idade: Acima de 18<br>

E-amail: $email<br>

Senha: $senha";}

?>

O problema é que quando eu descumpro alguma condição no primeiro formulário, no segundo ele mostra o erro, mas o segundo formulario já esta lá para ser preenchido, eu quero que só exiba o proximo formulario quando a varialvel $erro for "0", eu tentei deixar o formulario dentro do arquivo PHP mas quando chegava na pagina "final.php" ela não retornava o valor de nome e e-mail, o q fazer??o.O se tiver alguma outra coisa que eu poderia ter feito para deixar o codigo mais limpo, diga ae ^^

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0
Bem, não é um sistema de cadastramento de verdade, nem usa banco de dados, é só porque eu to aprendendo mesmo :P

-----cadastra_inicial.php

<h1 align="center"><font color="blue">Cadastrar - Inicial</font></h1>

<form method="POST" action="cadastra_final.php">

Nome: <input type="text" name="nome"><br>

Sobrenome: <input type="text" name="sobrenome"><br>

Você é de maior? <select name="maior" size="1">

<option value="sim">Sim</option><option value="não">Não</option></select><br>

E-mail: <input type="text" name="email"><br>

<input type="submit" value="Prosseguir"> <input type="reset" value="Limpar">

</form>

-----cadastra_final.php

<html><body><?php

$nome = $_POST["nome"];

$sobre = $_POST["sobrenome"];

$maior = $_POST["maior"];

$email = $_POST["email"];

$erro=0;

if (strlen($nome)<5){

echo "Seu nome deve conter mais que 5 caracteres!";

$erro=1;}

elseif ($maior == "não"){

echo "Você deve ter mais de 18 anos!";$erro=1;}

elseif (strstr($email,"@")==FALSE){

echo "Digite um e-mail valido";$erro=1;}

elseif ($erro==0){}

?>

<h1 align=center"><font color="blue">Cadastrar - Final</font></h1>

<form method="POST" action="final.php">

<input type="hidden" name="nome" value=\"<?php echo $nome; ?>">

<input type="hidden" name="sobrenome" value="<?php echo $sobre; ?>">

<input type="hidden" name="maior" value="<?php echo $maior; ?>">

<input type="hidden" name="email" value="<?php echo $email; ?>">

Senha: <input type="password" name="senha"><br>

Digite novamente a senha: <input type="password" name="n_senha"><input type="submit" value="Ultimo passo">

</form>

</body></html>

-------final.php

<?php

$senha = $_POST["senha];

$n_senha = $_POST["n_senha"];

$nome = $_POST["nome"];

$sobre = $_POST["sobrenome"];

$maior = $_POST["maior"];

$email = $_POST["email"];

$erro=0;

if ($senha != $n_senha){

echo "Você deve digitar a mesma senha nos dois campos";$erro=1;}

elseif (empty($senha) OR empty($n_senha)){ echo "Você deve digitar uma senha!"; $erro=1;}

elseif (strlen($senha)<5){ echo "A senha ter de ter mais de 5 caracteres!"; $erro=1;}

elseif (strlen($senha)>12){ echo "A senha ter de ter menos de 12 caracteres!"; $erro=1;}

elseif ($erro == 0){ echo "Parabens, você criou sua conta!<br>Aqui estão seus dados:<br> Nome: $nome $sobre<br>

Idade: Acima de 18<br>

E-amail: $email<br>

Senha: $senha";}

?>

O problema é que quando eu descumpro alguma condição no primeiro formulário, no segundo ele mostra o erro, mas o segundo formulario já esta lá para ser preenchido, eu quero que só exiba o proximo formulario quando a varialvel $erro for "0", eu tentei deixar o formulario dentro do arquivo PHP mas quando chegava na pagina "final.php" ela não retornava o valor de nome e e-mail, o q fazer??o.O se tiver alguma outra coisa que eu poderia ter feito para deixar o codigo mais limpo, diga ae ^^

Retira o que eu pintei de vermelho e coloca após o php. Tenta trabalhar com header. Mas para trabalhar com esta função, tu não podes ter NENHUMA saída html no texto anteriormente a ela. Dae tu verifica se o $erro é diferente de zero; se sim, tu chama a página que você quer com header("Location: pagina.php"); ou tu manda parar o código com exit();

http://br.php.net/manual/pt_BR/function.header.php

http://br.php.net/manual/pt_BR/function.exit.php

A página que tu queres é a do formulário anterior, entendes? ^_^

Editado por Wanderson Camargo
Link para o comentário
Compartilhar em outros sites

  • 0

Atah vlw ^^ consegui com a função header, mas eu não entendi a do exit; o.O

Viu, antes eu também tinha tentado usar break, mas dava um erro, se bem q eu não sei usar muito esta função :P, quando ela é usada?

Tenho outra pergunta, tipo num painel de administração tem no menu, logout, cadastrar e adicionar, mas o conteudo destas pagina estão tudo dentro de um unico arquivo php, mas se por exemplo: alguém clica em adicionar, não vai exibir os codigos de todas as paginas apenas a parte do "adicionar", como se que faz isso?

Link para o comentário
Compartilhar em outros sites

  • 0

Olha, provavelmente este POG é feito com if dentro de um único arquivo. Isto deixa o php um lixo e tudo misturado! Por favor, não faça isso! =D

Quanto ao exit(), ele finaliza a execução do script. =)

Abraços!

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
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...