Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Preciso de ajuda, quando eu faça as validações do formulário, por exemplo: informa a senha, não fica gravado o dado no formulário de cima, tipo nome.
Já tentei colocar value="<?php echo $nome ?> dentro do value mas ai aparece:
<br /><b>Notice</b>: Undefined variable: nome in <b>C:\xampp\htdocs\site\cadastro.php</b> on line <b>18</b><br />
Alguém sabe como resolver ?
Dá uma olhada nesse post aqui, vala sobre validação no lado do servidor. Espero que te ajude.
Link não autorizado removido
É uma coisa simples mas não estou conseguido. Só preciso que quando eu clicar em cadastrar e o campo senha estiver vazio ai me apresente a validação "Informe senha" mas sem sumir o valor do campo anterior.
Se "nome" for o valor do atributo 'name' do campo, então ele está armazenado em $_POST['nome'] ou $_GET['nome'], a depender se seu formulário é submetido via POST ou GET.
Acho que vocês não entenderam, vizualizem:
Eu possuo um formulário onde tem varios campos, suponhamos ter preenchido os 5° primeiros campos do formulário sem ter preenchido o próximo e clico no botão cadastrar, ai me vem as validações, porém os campos que estavam corretos ficam vazios.
Gostaria de saber como faço para solucionar isso.
Amigo, acho melhor você postar o código desse arquivo cadastro.php para que possamos analisar e ver onde está o erro.
Ok amigo, o código completo está logo abaixo, só preciso que quando o usuário deixar de preencher um campo, por exemplo o 4° campo, os anteriores fiquem com seus valores dentro.
<?php
include "config.php";
$nome = $_POST['nome'];
$email = $_POST['email'];
$email2 = $_POST['email2'];
$dia = $_POST['dia'];
$mes = $_POST['mes'];
$ano = $_POST['ano'];
$usuario = $_POST['usuario'];
$senha = $_POST['senha'];
$senha2 = $_POST['senha2'];
if(!$nome){
echo "Informe seu nome completo !";
include "cadastro.php";
}
else if(!$email){
echo "Informe seu email !";
include "cadastro.php";
}
else if(!$email2){
echo "Confirme seu email !";
include "cadastro.php";
}
else if ($email != $email2){
echo "Os emails não conferem";
include "cadastro.php";
}
else if($dia == "Dia"){
echo "Informe seu dia de nascimento";
include "cadastro.php";
}
else if($mes == "mes"){
echo "Informe seu mês de nascimento";
include "cadastro.php";
}
else if($ano == "ano"){
echo "Informe seu ano de nascimento";
include "cadastro.php";
}
else if(!$usuario){
echo "Escolha um nome de usuário !";
include "cadastro.php";
}
else if(!$senha){
echo "Informe uma senha";
include "cadastro.php";
}
else if(!$senha2){
echo "Confirme a senha";
include "cadastro.php";
}
else if($senha != $senha2){
echo "As senhas não conferem";
include "cadastro.php";
}
else{
$consulta_email = mysql_query("SELECT COUNT(id) FROM usuarios WHERE email='$email'"); // verificação do email
$verifica1 = mysql_fetch_array($consulta_email);
$consulta_email = $verifica1[0];
$consulta_usuario = mysql_query("SELECT COUNT(id) FROM usuarios WHERE usuario='$usuario'");
$verifica2 = mysql_fetch_array($consulta_usuario);
$consulta_usuario = $verifica2[0];
if($consulta_email > 0){
echo "Este email já está cadastrado";
include "cadastro.php";
}
else if($consulta_usuario > 0){
echo "Este usuario já está cadastrado";
include "cadastro.php";
}
else{
$senha = crypt(MD5('$senha'));
$inserir = mysql_query("INSERT INTO usuarios (nome, email, dia, mes, ano, usuario, senha, data_cadastro) Values ('$nome', '$email', '$dia', '$mes', '$ano', '$usuario', '$senha', now())");
echo "Usuário Cadastrado com sucesso !";
include "cadastro.php";
}
}
?>desculpe desviar o assunto, mas você não quer aprender a fazer de uma forma melhor?
digo isso porque está terrivelmnte mal escrito o código acima...
Por que em vez de reclamar do amigo, nao indica uma solucao?
#9
Não fiz reclamação alguma.
Estou apenas pedindo licensa ao autor do tópico para oferecer ajuda, a qual mudará completamente o que ele já está fazendo.
Por vezes não é conveniente modificar tudo, por isso, pedi licensa também para evitar perder tempo mostrando algo que por ventura não seja do interesse do autor do tópico.
off
1. já que tocou no assunto, qual a sua sugestão para ajudar, ou veio aqui só pra reclamar?
2.
>
hinomPosts:12869
Cadastrado:25 Fev 2003 - 04:39
<>
>
ArmandoTLPosts:9
Cadastrado:19 Ago 2011 - 17:21
>
#9
Não fiz reclamação alguma.
Estou apenas pedindo licensa ao autor do tópico para oferecer ajuda, a qual mudará completamente o que ele já está fazendo.
Por vezes não é conveniente modificar tudo, por isso, pedi licensa também para evitar perder tempo mostrando algo que por ventura não seja do interesse do autor do tópico.
off
1. já que tocou no assunto, qual a sua sugestão para ajudar, ou veio aqui só pra reclamar?
2.
<>
Me desculpe e que o Firefox ta com bug entao alem de ta sem abnt2 no firefox, estou com problemas com abas me desculpe ehehe.
Hihom, agradeço pela ajuda, mas eu ja sei fazer de outras formas e no momento estou usando está apenas para testes, mas eu só quero saber uma coisa simples ... que poderia ter resolvido na primeira resposta se ninguém tivesse desviado o assunto.
Se você souber responder minha dúvida agradeço.
Na primeira resposta, do vinicius, eu responderia da mesma forma... na sequencia você explicou melhor o que ocorre e até que chegou ao post # 8 onde você mostra como está o código..
Não havia possibilidade alguma de alguém dar uma resposta exata para algo vago..
Com os seus posts #4 e #8 ficou bem claro.
Resolvi sugerir refazer todo esse script porque está completamente redundante e inviável fazer o que pretende.
sugestão
<?php
include "config.php";
$fields = array('nome', 'email', 'email2', 'dia', 'mes', 'ano', 'usuario', 'senha', 'senha2');
foreach( $fields as $v )
{
if( isset( $_POST[$v] ) )
{
$$v = trim( $_POST[$v] );
}
}
Somente isso já reduz e corrige mais de 60% do script original.
e aí ? quer aprender a consertar o restante ?
Então Hihom quero sim, todo conhecimento é bem vindo, mas só me responda uma coisa: Esse script que montou é o que substitui o resgate das variáveis no form ? e se sim, não entendi o que vai fazer a variável ficar armazenada dentro do form após a validação.
Estou à disposição para o aprendizado :)
Coloque:
if(!isset($nome) || empty($nome))
{
echo 'Informe seu nome completo!';
}
Espero ter ajudado. ;)
exemplo baseado no script sugerido.
não modifiquei a parte do SQL para que você entenda os passos.
faltam diversos pontos importantes, como por exemplo, validar as entradas.
tamanho mínimo
tamaho máximo
letra, número, numero mínimo, número máximo
formato da string (validar formato do email, por exemplo)
antes de montar o SQL, remover possíveis injeções.. do jeito que está feito, permite injeções SQL..
<?php
include "config.php";
$fields = array('nome', 'email', 'email2', 'dia', 'mes', 'ano', 'usuario', 'senha', 'senha2');
foreach( $fields as $v )
{
if( isset( $_POST[$v] ) )
{
$$v = trim( $_POST[$v] );
if( empty($$v) )
{
$error[$v] = 'Favor preencher o campo';
}else{
switch($v)
{
case 'email2':
if( $email != $email2 )
{
$error[$v] = 'Os emails não conferem';
}
break;
}
}
}else{
$$v = false;
}
}
if( isset($_POST) )
{
if( !isset( $error ) )
{
$consulta_email = mysql_query("SELECT COUNT(id) FROM usuarios WHERE email='$email' LIMIT 1"); // verificação do email
$verifica1 = mysql_fetch_array($consulta_email);
$consulta_email = $verifica1[0];
$consulta_usuario = mysql_query("SELECT COUNT(id) FROM usuarios WHERE usuario='$usuario' LIMIT 1");
$verifica2 = mysql_fetch_array($consulta_usuario);
$consulta_usuario = $verifica2[0];
if($consulta_email > 0)
{
$error['email'] = "Este email já está cadastrado";
}else if($consulta_usuario > 0){
$error['usuario'] = "Este usuario já está cadastrado";
}
}
if( !isset( $error ) )
{
$senha = crypt(MD5('$senha'));
$inserir = mysql_query("INSERT INTO usuarios (nome, email, dia, mes, ano, usuario, senha, data_cadastro) values ('$nome', '$email', '$dia', '$mes', '$ano', '$usuario', '$senha', now())");
$final_message = "Usuário Cadastrado com sucesso !";
}
}
include "cadastro.php";
?>
no formulário, abaixo de cada campo, coloque a condicional para exibir a mensagens de erro, caso existam. Exemplo, o campo 'email':
<?php $f = 'email';?>
<input type="text" value="<?php echo $$f;?>">
<?php if( isset($error[$f]) ){ echo '<br />' .$error[$f]; }?>Melhor... faça o seguinte:
$nome = trim($_POST['nome']);
$email = trim($_POST['email']);
$email2 = $_POST['email2'];
$dia = $_POST['dia'];
$mes = $_POST['mes'];
$ano = $_POST['ano'];
$usuario = trim($_POST['usuario']);
$senha = trim($_POST['senha']);
$senha2 = trim($_POST['senha2']);
$erros = array();
if(!isset($nome) || empty($nome))
{
$erros[] = 'Informe seu nome completo.';
}
if(!isset($email) || empty($email))
{
$erros[] = 'Informe um email.';
}
if(!isset($email2) || empty($email2))
{
$erros[] = 'Digite a confirmação de email.';
}
if($email != $email2) $erros[] = 'O primeiro email não coincide com o segundo email digitado.';
}
if(!isset($dia) || empty($dia))
{
$erros[] = 'Digite o dia do seu nascimento.';
}
if(!isset($mes) || empty($mes))
{
$erros[] = 'Digite o mês do seu nascimento.';
}
if(!isset($ano) || empty($ano))
{
$erros[] = 'Digite o ano do seu nascimento.';
}
if(!isset($usuario) || empty($usuario))
{
$erros[] = 'Digite um nome de usuário';
}
if(!isset($senha) || empty($senha))
{
$erros[] = 'Digite uma senha.';
}
if(!isset($senha2) || empty($senha2))
{
$erros[] = 'Digite a confirmação da senha.';
}
if($senha != $senha2) $erros[] = 'A primeira senha não coincide com a segunda senha digitada.';
}
// se quiser, faça mais verificações, como validação de email, usuários com apenas caracteres comuns e etc.
if(count($erros) == 0)
{
função para inserir no banco de dados, ou qualquer coisa...
}
if(count($errors) > 0)
{
echo '<b>Erros encontrados!</b><br>';
foreach($errors as $erro)
{
echo "<li>$erro</li>";
}
}
Outra coisa que vi, você colocou a variável $senha pra encriptar dentro de aspas simples. Não vai funcionar. Ou você retira as aspas, ou põe aspas duplas. O resto eu passei uma vista rápida, só reparei este erro. Boa sorte ;)
Vlw Slent eu utilizei o Isset e deu certo o que eu queria e corrigi algumas coisas graças as suas dicas e a hihom, vlw !!!
esse erro informa que a $nome não existe.
você precisa declarar antes.