Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

mruoppolo

Problemas com validação de email

Recommended Posts

Olá, tudo bem?

 

Eu estou fazendo um sistema que precisa do registro de usuário e no caso eu não queria que os usuários fizessem 2 cadastros com o mesmo e-mail, então eu coloquei no arquivo que registra o usuário a seguinte instrução:

//Valida o E-Mail
$buscar_email = mysqli_query($conn,"select * from tb_user where strUserEmail='$email'");
$conta_email = mysqli_num_rows($buscar_email);
if($conta_email>=1 && $perfilTipo==1){
	header("Location ../../registrar-profissional.php?erroEmail=true");
}elseif($conta_email>=1 && $perfilTipo==2){
	header("Location ../../registrar-cliente.php?erroEmail=true");
}

O engraçado é que ele esta buscando normalmente esta encontrando o e-mail já cadastrado no sistema, tanto é que dentro do if se eu coloco alguma mensagem pra depurar, como por exemplo:

if($conta_email>=1 && $perfilTipo==1){
        echo "Email cadastrado"; exit;
	header("Location ../../registrar-profissional.php?erroEmail=true");
}elseif($conta_email>=1 && $perfilTipo==2){
        echo "Email cadastrado"; exit;
	header("Location ../../registrar-cliente.php?erroEmail=true");
}

Ele printa a mensagem de e-mail cadastrado tranquilamente, só não esta executando o comando header(); ai vem uma parte mais engraçada ainda, no final do arquivo tem um comando header para redirecionar o usuário para a escolha do plano que deseja assinar e adivinha??

 

Lá ele funciona normalmente, você tem ideia do que pode estar acontecendo??

 

P.s.: Já tentei substituir o header() pelo window.location do javascript e também não funcionou

 

Muito obrigado :D

Compartilhar este post


Link para o post
Compartilhar em outros sites
<?php
header('Content-Type: text/html; charset=UTF-8');
require_once('connection.php');
require_once('../functions/email-functions.php');

//Pegar os dados
$nomeCompleto = $_POST['nome']." ".$_POST['sobrenome'];
$email = $_POST['email'];
$senha = md5($_POST['senha']);
if(isset($_POST['hash'])){
	$hash = $_POST['hash'];
}
$perfilTipo = $_POST['perfilTipo'];

//Valida o E-Mail
$buscar_email = mysqli_query($conn,"select * from tb_user where strUserEmail='$email'");
$conta_email = mysqli_num_rows($buscar_email);
if($conta_email>=1 && $perfilTipo==1){
	header("Location ../../registrar-profissional.php?erroEmail=true");
}elseif($conta_email>=1 && $perfilTipo==2){
	header("Location ../../registrar-cliente.php?erroEmail=true");
}

//Criar a conta
$criar_conta = mysqli_query($conn,"insert into tb_user (strUserNome,strUserEmail,strUserSenha) values ('$nomeCompleto','$email','$senha')");
$userid = mysqli_insert_id($conn);

//Criar o Perfil
$criar_perfil = mysqli_query($conn, "insert into tb_perfil (intUserID,strPerfilTipo) values ('$userid','$perfilTipo')");
$perfilid = mysqli_insert_id($conn);

//Enviar e-mail de confirmação de conta
$nome = $_POST['nome'];
$confirmar = confirmaEmail($nome,$email,$senha);

//Cria a sessão
session_start();
$_SESSION['clienteValida'] = 1;
$_SESSION['clienteID'] = $userid;
$_SESSION['perfilID'] = $perfilid;

//Registra a Categoria do Perfil
$registra_categoria = mysqli_query($conn,"insert into tb_perfil_categoria (intPerfilID,intProjetoCategoriaID) values
	('$perfilid','$categoriaid')");

//Redireciona o usuário
if(!isset($_POST['hash']) && $perfilTipo == 1){
	header("Location: ../../escolher-plano.php");
}elseif(isset($_POST['hash']) && $perfilTipo == 1){
	header("Location: assinar-plano.php?hash=".$_POST['hash']);
}elseif($perfilTipo == 2){
	header("Location: ../../confirmacao.php");
}
?>

Este é o arquivo registrar-user.php

 

E este é o formulário:

<?php include('includes/configs/connection.php'); ?>
<!DOCTYPE html>
<html lang="pt_br" class="body-full-height">
    <head>        
        <!-- META SECTION -->
        <title>Acesso ao Sistema | Lumihost Freelancers</title>            
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="viewport" content="width=device-width, initial-scale=1" />
        
        <link rel="icon" href="favicon.ico" type="image/x-icon" />
        <!-- END META SECTION -->
        
        <!-- CSS INCLUDE -->        
        <link rel="stylesheet" type="text/css" id="theme" href="css/theme-white.css"/>
        <!-- EOF CSS INCLUDE -->                                    
    </head>
    <body>
        
        <div class="login-container">
        
            <div class="login-box animated fadeInDown">
                <div class="login-logo"></div>
                <div class="login-body">
                    <?php
                        if(isset($_GET['erroEmail']) && $_GET['erroEmail'] == 'true'){
                            echo '<div class="alert alert-danger" role="alert">
                                <strong>Oops!</strong> Este e-mail já esta cadastrado em nosso sistema.
                            </div>';
                        }
                    ?>
                    <div class="login-title"><strong>Olá,</strong> crie sua conta de profissional</div>
                    <form action="includes/configs/registrar-user.php" class="form-horizontal" method="post">
                    <div class="form-group">
                        <div class="col-md-6">
                            <input type="text" class="form-control" required name="nome" placeholder="Nome"/>
                        </div>
                        <div class="col-md-6">
                            <input type="text" class="form-control" required name="sobrenome" placeholder="Sobrenome"/>
                        </div>
                    </div>
                    <div class="form-group">
                        <div class="col-md-12">
                            <input type="text" class="form-control" required name="email" placeholder="E-mail"/>
                        </div>
                    </div>
                    <div class="form-group">
                        <div class="col-md-12">
                            <input type="password" class="form-control" required name="senha" placeholder="Senha"/>
                        </div>
                    </div>
                    <div class="form-group">
                        <div class="col-md-12">
                            <input type="password" class="form-control" required name="senha2" placeholder="Repita a Senha"/>
                        </div>
                    </div>
                    <div class="form-group">
                        <div class="col-md-12">
                            <select name="categoria" class="form-control">
                                <option default class="form-control">Selecione a Categoria</option>
                                <?php
                                    $bc = mysqli_query($conn,"select * from tb_projeto_categoria");
                                    $contagem = mysqli_num_rows($bc);
                                    while($cat=mysqli_fetch_assoc($bc)){
                                ?>
                                    <option value="<?php echo $cat['intProjetoCategoriaID']; ?>" class="form-control"><?php echo $cat['strProjetoCategoriaNome']; ?></option>
                                <?php
                                    }
                                ?>
                            </select>
                        </div>
                    </div>
                    <div class="form-group">
                        <div class="checkbox text-center">
                            <label style="color:#fff;">
                                <input type="checkbox" name="termos" id="termos" required>
                                Declaro que aceito os <a href="http://lumihost.com.br/site/termos-de-uso" target="_Blank">Termos de Uso</a>.
                            </label>
                        </div>
                    </div>
                    <div class="form-group">
                        <div class="col-md-12">
                            <input type="hidden" name="perfilTipo" value="1">
                            <?php if(isset($_GET['hash'])){ ?>
                            <input type="hidden" name="hash" value="<?php echo $_GET['hash']; ?>">
                            <?php } ?>
                            <button class="btn btn-info btn-block">Criar Conta</button>
                        </div>
                    </div>
                    <!-- LOGIN COM REDES SOCIAIS 
                    <div class="login-or">OU</div>
                    <div class="form-group">
                        <div class="col-md-12">
                            <button class="btn btn-info btn-block btn-facebook"><span class="fa fa-facebook"></span> Facebook</button>
                        </div>
                    </div>
                    -->
                    <div class="login-subtitle">
                        Já possui uma conta? <a href="index.php">Clique aqui</a> para acessá-la.
                    </div>
                    </form>
                </div>
                <div class="login-footer">
                    <div class="pull-left">
                        © 2016 Lumihost
                    </div>
                    <div class="pull-right">
                        <a href="http://lumihost.com.br/site/#como-funciona" target="_Blank">Como Funciona</a> |
                        <a href="http://lumihost.com.br/site/termos-de-uso" target="_Blank">Termos de Uso</a> |
                        <a href="http://lumihost.com.br/site/#fale-conosco" target="_Blank">Fale Conosco</a>
                    </div>
                </div>
            </div>
            
        </div>
        
    </body>
</html>







Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah sim, então eu coloquei desta forma, mas mesmo assim não resolveu:

//Valida o E-Mail
$buscar_email = mysqli_query($conn,"select * from tb_user where strUserEmail='$email'");
$conta_email = mysqli_num_rows($buscar_email);
if($conta_email>=1 && $perfilTipo==1){
	header("Location: https://app.lumihost.com.br/registrar-profissional.php?erroEmail=true");
}elseif($conta_email>=1 && $perfilTipo==2){
	header("Location: https://app.lumihost.com.br/registrar-cliente.php?erroEmail=true");
}

Ai depois eu dei uns ctrl z pra voltar para o ../../ no lugar da url inteira, porque eu estou desenvolvendo em localhost

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ele aparece o seguinte:

 

int(13) string(1) "1"

 

Mas assim, ele esta entrando no loop, como eu falei, se eu coloco uma mensagem para depurar o código, tipo um:

 

echo "Ja cadastrado"; exit;

 

Dentro do if ele printa certinho, ele esta entrando no laço só não esta respeitando o header()

 

muito estranho

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não habilitei aquele error_reporting, mas já printei algo depois do header e ele funciona normalmente inclusive o header no final da página ta funcionando normalmente também, vo colocar aqui o error_reporting pra ver, nem lembrava dele, rsrs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha só que coisa estranha, eu coloquei o error_reporting no arquivo mas ele não mostrou nada, ai eu comentei os redirecionamentos do final do arquivo, apenas deixei comentado esta parte aqui:

/*Redireciona o usuário
if(!isset($_POST['hash']) && $perfilTipo == 1){
	header("Location: ../../escolher-plano.php");
}elseif(isset($_POST['hash']) && $perfilTipo == 1){
	header("Location: assinar-plano.php?hash=".$_POST['hash']);
}elseif($perfilTipo == 2){
	header("Location: ../../confirmacao.php");
}*/

E adivinha??

 

Ele funcionou normalmente, rsrs, porém eu preciso disso ai no final do script

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara criei aqui uma condição a mais, tipo, quando ele encontra o e-mail no banco de dados ele gera uma variavel chamada $erroEmail e coloca o valor 1 ai no último redirecionamento eu coloquei no if dele esse $erroEmail e quando for o valor 1 ele redireciona de volta para o registro de usuário e funcionou perfeitamente.

 

Valeu rockrgo

Compartilhar este post


Link para o post
Compartilhar em outros sites

é cara na verdade estava passando algo despercebido. Depois que você coloca o header location ele continua executando o restante do arquivo então o correto seria colocar um exit() após o header. Assim ele não continuaria executando o arquivo e redirecionaria sua página normalmente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então eu até havia tentado isso, mas quando eu fiz dessa forma, ele toda vez que lia o script e via o exit(); ja finalizava o script, mesmo o e-mail não estando cadastrado no sistema, eu achei muito estranho isso, ai, rsrs

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.