Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olé galera, estou com problemas na validação de meu formulario em php.
Possui a página de cadastro(cadastro.php) e a de validação (cadastrar.php), algumas validações até que funcionam por exemplo: Se o campo usuario estiver vazio apresente tal mensagem.
Mas não estou conseguindo validar o email com @ e ., Já tentei usar a validação do próprio php tentei com expressões regulares e nada, olhem me código:
include "config.php";
$usuario = trim($_POST['usuario']);
$email = trim($_POST['email']);
/ Vamos checar algum erro nos campos /
if ((!$usuario) || (!$email)){
if (!$usuario){
echo "Informe seu usuário";
}
else
if (!$email){
echo "Informe seu email !";
}
include "cadastro.php";
}else{
.... Verificação se ja possui o usuario e email cadastrado no BD senão realiza o cadastro......
Ai tentei varias condições para o email tipo:
if ((strlen($email) >= 6) && (substr_count($email,"@") == 1)
Ja tentei o VALIDATE_EMAIL do php mas não funciona, me ajudem !
Tenta essa ai
$erro=0;
if(strlen($email)<8 || strstr($email, '@')==FALSE || strstr($email, '.')==FALSE)
{echo "Favor digitar seu email corretamente.<br>"; $erro=1;}
Pode usar o filter_var:
filter_var('bob@example.com', FILTER_VALIDATE_EMAIL)
Então Gabriel, o código está correto o único problema é que está pulando a validação se o email está correto.
*Ele passa pela validação se o campo do usuário estiver vazio.
*Ele passa pela validação se o campo do email estiver vazio.
*Ao inves de ir para a proxima validação de verificar se o email é correto ele pula para a validação se o usuário já esta cadastrado.
Segue o código completo:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Cadastre-se</title>
<?php
include "config.php";
$usuario = trim($_POST['usuario']);
$email = trim($_POST['email']);
/ Vamos checar algum erro nos campos /
if ((!$usuario) || (!$email)){
if (!$usuario){
echo "Informe seu usuário";
}
else
if (!$email){
echo "Informe seu email";
}
else
((((((((((Aqui viria a condição de validação do EMAIL, porém pula para a próxima !)))))))))
include "cadastro.php";
}else{
/ Vamos checar se o nome de Usuário escolhido e/ou Email já existem no banco de dados /
$sql_email_check = mysql_query(
"SELECT COUNT(usuario_id) FROM usuarios WHERE email='{$email}'"
);
$sql_usuario_check = mysql_query(
"SELECT COUNT(usuario_id) FROM usuarios WHERE usuario='{$usuario}'"
);
$eReg = mysql_fetch_array($sql_email_check);
$uReg = mysql_fetch_array($sql_usuario_check);
$email_check = $eReg[0];
$usuario_check = $uReg[0];
if (($email_check > 0) || ($usuario_check > 0)){
if ($email_check > 0){
echo "Email já cadastrado !";
unset($email);
}
if ($usuario_check > 0){
echo "Usuário já cadastrado";
unset($usuario);
}
include "cadastro.php";
}else{
/* Se passarmos por esta verificação ilesos é hora de
finalmente cadastrar os dados.Cara seu erro está na lógica.
if ((!$usuario) || (!$email))
Nessa condição você pergunta:
Usuário e E-mail não existem??
Se eles não existiram, entra no resto! Então sempre o e-mail vai estar vazio e por isso não vai para o else que valida ele.
Tente fazer esse IF assim:
if(!empty($usuario) || !empty($email))
Agora nem a validação do usuário funciona, vai direto para a validação se existe ou não no BD. não funfou
Acho que estou deixando passar alguma coisa no seu código,
então fiz esse exemplo:
<?php
$email = "gabrielolferrari@@teste.com";
$login = "gabriel";
if(empty($email) || empty($login)){
$msg = "Login ou e-mail em branco";
}elseif(strlen($email) >= 6 && substr_count($email,"@") == 1){
$msg = "Email inválido";
}else{
$msg = "Tudo Ok";
}
print $msg;
?>
espero que ajude :)
Sua condição IF está correta,
O PHP está retornando algum erro?
Poste o código completo para darmos uma analisada.