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

Verificar status no banco de dados


Marlon Douglas

Pergunta

Oi galerinha do Fórum Script Brasil!

Eu estou precisando de ajuda em um sistema de cadastro, é o seguinte:

No meu banco de dados eu tenho uma tabela de cadastro, com as informações de ID, Nome, Foto, Informações, Status, Email, Login e Senha. Até ai tudo certo. Eu consegui fazer com que quando o usuario se registra-se automaticamente ele fica bloqueado, para desbloquea-lo ele acessa um link enviado para o email dele... Mas tem um probleminha, que eu já tentei resolver e nada D: É que tipo, o usuario esta bloqueado, mas mesmo assim ele entra no site. Eu já tentei validar, mas nada feito D:, consegui tae fazer que aparecesse a mensagem usuario bloqueado, mas ela aparecia junto ocom outra mensagem.

Então, é esse meu problema. Me ajudem? o código está abaixo(apenas o codigo mesmo, o formulario não precisa :x).

<?
// inclui o arquiv o de configurações do sistema
include "conn.php";

$acao = $_GET["acao"];

if ($acao == "logar") {

// revebe dados do formulario
$login = htmlspecialchars($_POST['login']);
$senha = $_POST['senha'];

// Verifica se o usuario esta bloqueado
$sql_pesq = mysql_query("SELECT * FROM usuarios WHERE Login = '$login'");
$verifica = mysql_num_rows($sql_pesq);

while($linha = mysql_fetch_array($sql_pesq)){
$status = $linha['status'];
}

if($status = bloqueado){
echo "Tu está bloqueado!";
}

// verifica se o usuario existe
$consulta = mysql_query("select * from usuarios where Login='$login' AND status = 'desbloqueado'");
$campos = mysql_num_rows($consulta);
if($campos != 0) {
// se o usuario existi verifica a senha dele
    if($senha != mysql_result($consulta,0,"Senha")) {
        echo "<font color=red><b>
              Senha incorreta!
              </font></b>";
        exit;
} else {
        // estiver tudo certo vamos ver se ele � o administrador
        if($login == $login_admin) {
            // se for o login do administrador vamos verificar a senha dele
            // se � igual a do administrado
            if($senha == $senha_admin) {
                // se for o administrador vomos criar a sess�o
                session_start();
                $_SESSION['login_usuario'] = $login;
                $_SESSION['senha_usuario'] = $senha;
            
                // redireciona o link para uma outra pagina
                header("Location: Admin/listar_usuarios.php");
                
            }
        } else {
            // se o login n�o for do administrado vamos criar a sess�o dele
            session_start();
            $_SESSION['login_usuario'] = $login;
            $_SESSION['senha_usuario'] = $senha;
            
            // redireciona o link para uma outra pagina
            header("Location: Usuario/dados_usuario.php");
        }
    }
} else {
    echo '<script language=\'javascript\'>alert(\'Senha ou usuário estão incorretos\')</script> 
<meta http-equiv="refresh" content="1; URL=index.php">'; 
    exit;
} 

}

?>

Viram, que no começo, eu ate tentei validar. Mas nada feito, me ajudem.

Obrigado!

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Após exibir a mensagem que o usuário está bloqueado, você pode executar o 'die();' que a execução irá parar ou redirecionar o usuário para outra página. Ou faz assim:

<?php

    // inclui o arquiv o de configurações do sistema
    include "conn.php";
    
    $acao = $_GET["acao"];
    
    if ($acao == "logar") {
        // revebe dados do formulario
        $login = htmlspecialchars($_POST['login']);
        $senha = $_POST['senha'];
        
        // verifica se o usuario existe
        $consulta = mysql_query("select * from usuarios where Login='$login' AND Senha='$senha'");
        $usuario = mysql_fetch_assoc($consulta);
        if(mysql_num_rows($consulta)){
            if($usuario['status']=='bloqueado'){
                echo "Tu está bloqueado!";
                die();
            }else{
                // cria a sessão
                session_start();
                $_SESSION['login_usuario'] = $login;
                $_SESSION['senha_usuario'] = $senha;
    
                // estiver tudo certo vamos ver se ele é o administrador
                if(($login==$login_admin) && ($senha==$senha_admin)) {
                    header("Location: Admin/listar_usuarios.php");
                } else {
                    header("Location: Usuario/dados_usuario.php");
                }
            }
        } else {
            echo '
                <script language=\'javascript\'>alert(\'Senha ou usuário estão incorretos\')</script>
                <meta http-equiv="refresh" content="1; URL=index.php">
            ';
            die();
        }
    }

?>

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

  • 0

Ok, mas você poderia fazer direto no sql assim:

$consulta = mysql_query("select * from usuarios where Login='$login' AND Senha='$senha AND status !='bloqueado'");

if( mysql_num_rows($consulta) == 0)
{
      echo "Tu está bloqueado!";
      // não precisa por die();
}
else
{
    //....poe todo o resto aqui
   // ..... não poe nada fora do else
}

com isso o mysql_num_rows so vai entrar caso o usuário já esteja bloqueado sem ifs adicionais.

fica menor e mais rápido para processar.

Link para o comentário
Compartilhar em outros sites

  • 0

Assim não daria certo, pois se não retornasse nenhuma linha na consulta (como por exemplo se não existisse o usuário ou a senha estivesse errada), seria exibida a mensagem que o usuário está bloqueado, mesmo o usuário não existindo ou a senha errada...

Link para o comentário
Compartilhar em outros sites

  • 0
Assim não daria certo, pois se não retornasse nenhuma linha na consulta (como por exemplo se não existisse o usuário ou a senha estivesse errada), seria exibida a mensagem que o usuário está bloqueado, mesmo o usuário não existindo ou a senha errada...

Parabens Stoma. Boa obs.

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...