Jump to content
richard nicson

Criar sistema de bloqueio Conta pelo SQL

Recommended Posts

Boa tarde,estou com uma dúvida preciso criar algo que exiba mensagem para o usuário que tentar acessar a conta dele mas estiver com o campo Ativado na opção 2 de "Sua conta foi bloqueada."

 

Eu já possuo um campo em todas as contas chamado ativado onde automáticamente é inserido o valor 1 de ativado.

Porém usuários que efetuarem algo errado irei bloquear a conta atualizando o valor no sql para 2.

 

Mas de acordo com meu código fiz alguns testes e não está sendo satisfatório,peço auxilio de vocês.

 

abaixo o script de verificar a conta.

 

<?php
session_start();  // Inicia a session

include "config.php"; 

$usuario = $_POST['usuario'];
$senha = $_POST['senha'];

if ((!$usuario) || (!$senha)){

echo "Por favor, todos campos devem ser preenchidos! <br /><br />";

include "logar.php";

}else{

$sql = mysql_query(

"SELECT * FROM usuarios
WHERE (usuario='$usuario' OR email='$usuario')
AND senha='{$senha}'"

);
$login_check = mysql_num_rows($sql);

if ($login_check > 0){

while ($row = mysql_fetch_array($sql)){

foreach ($row AS $key => $val){

$$key = stripslashes( $val );

}

$_SESSION['usuario_id'] = $usuario_id;
$_SESSION['nome'] = $nome;
$_SESSION['sobrenome'] = $sobrenome;
$_SESSION['email'] = $email;
$_SESSION['nivel_usuario'] = $nivel_usuario;

mysql_query(

"UPDATE usuarios SET data_ultimo_login = now()
WHERE usuario_id ='{$usuario_id}'"

);
?>
 <meta http-equiv="refresh" content="0; index.php?page=painel">
<?php
}
}else{
echo "Voce nao pode logar-se! Este usuario e/ou senha nao sao validos!<br />
Por favor tente novamente!<br />";

include "logar.php";

}

}

?>

 

Share this post


Link to post
Share on other sites

acho que não precisa desse while e nem do foreach pois se espera que tenha só um usuário com tal email e/ou usarname então pode mandar o $row direto

$row = mysql_fetch_array($sql);

if($row['ativado'] == 2){
    // bloquear acesso
}

 

  • Gostei 1

Share this post


Link to post
Share on other sites
11 minutos atrás, marsolim disse:

acho que não precisa desse while e nem do foreach pois se espera que tenha só um usuário com tal email e/ou usarname então pode mandar o $row direto


$row = mysql_fetch_array($sql);

if($row['ativado'] == 2){
    // bloquear acesso
}

 

Olá Marlin agradeço sua resposta,retirei o foreach e while,inseri o row porém parece que não está criando a session pois da uma resposta de você não está logado,quando direciona.

Segue abaixo o código modificado.

 

<?php
session_start();  // Inicia a session

include "config.php"; 

$usuario = $_POST['usuario'];
$senha = $_POST['senha'];

if ((!$usuario) || (!$senha)){

echo "Por favor, todos campos devem ser preenchidos! <br /><br />";

include "logar.php";

}else{

$sql = mysql_query(

"SELECT * FROM usuarios
WHERE (usuario='$usuario' OR email='$usuario')
AND senha='{$senha}'"

);
$row = mysql_fetch_array($sql);
if($row > 0){
if ($row['ativado'] == 2){
    echo "Sua conta está bloqueada";
}else{

$_SESSION['usuario_id'] = $usuario_id;
$_SESSION['nome'] = $nome;
$_SESSION['sobrenome'] = $sobrenome;
$_SESSION['email'] = $email;
$_SESSION['nivel_usuario'] = $nivel_usuario;

mysql_query(

"UPDATE usuarios SET data_ultimo_login = now()
WHERE usuario_id ='{$usuario_id}'"

);
?>
 <meta http-equiv="refresh" content="0; index.php?page=painel">
<?php
}}else{
echo "Voce nao pode logar-se! Este usuario e/ou senha nao sao validos!<br />
Por favor tente novamente!<br />";

include "logar.php";

}

}

?>

 

Share this post


Link to post
Share on other sites
1 hora atrás, richard nicson disse:

$_SESSION['usuario_id'] = $usuario_id; $_SESSION['nome'] = $nome; $_SESSION['sobrenome'] = $sobrenome; $_SESSION['email'] = $email; $_SESSION['nivel_usuario'] = $nivel_usuario;

Essas variáveis não seriam:

$_SESSION['usuario_id'] = $row['usuario_id'];

Ou elas estão vindo de algum lugar não especificado por você ali em cima?

  • Gostei 1

Share this post


Link to post
Share on other sites
22 minutos atrás, Gleyson Abreu disse:

Essas variáveis não seriam:

$_SESSION['usuario_id'] = $row['usuario_id'];

Ou elas estão vindo de algum lugar não especificado por você ali em cima?

 

Era isso mesmo,muito obrigado..

 

Script está funcionando perfeitamente...

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Sapinn
      Opa galera tudo beleza? Então meu banco está me retomando um erro quando tento inserir nele que é "Dados truncados na coluna valor_produto" essa coluna era do tipo Double quando eu mudei para ela para TEXT funcionou os dados foram inseridos mas eu preciso que ela seja do tipo double. Alguém sabe como resolver????
    • By joeythai
      Boa tarde rapaziada,
       
      Criei uma procedure que está trazendo os dados certinhos com exceção de uma coluna(Caminho do Arquivo) está cortando o nome do arquivo que salvo lá. O código é esse:
       
      <code>
      CREATE PROCEDURE dbo.clientes2 @Produto_ID INT = NULL, @Comprador_ID INT = NULL, @NM_Token NVARCHAR(MAX) = NULL, @DocumentoTipo INT = NULL, @NM_CPF CHAR(20) = NULL, @Teste INT = 0 AS   SET @Produto_ID = ISNULL(@Produto_ID, 0); SET @Comprador_ID = ISNULL(@Comprador_ID, 0); SET @NM_Token = RTRIM(LTRIM( ISNULL(@NM_Token, '') )); SET @DocumentoTipo = ISNULL(@DocumentoTipo, 0); SET @NM_CPF = RTRIM(LTRIM(@NM_CPF)); SET @Teste = ISNULL(@Teste, 1);   IF(@Teste = 1) BEGIN   IF(ISNULL(@Comprador_ID,0) > 0 AND @Produto_ID > 0)   BEGIN SELECT cliente.ID, cliente.Produto_ID, cliente.Carro_ID, cliente.Coligacao_ID, cliente.Cliente_ID, cliente.Deposito_ID, cliente.DocumentoTipo, CAST(cliente.NM_Arquivo AS nvarchar) as NM_Arquivo, CAST(cliente.NM_Token AS nvarchar) as NM_Token, cliente.NM_Responsavel, cliente.Data_BR, compradores.ID FROM Cliente cliente WITH (NOLOCK) INNER JOIN Produto produto WITH (NOLOCK) ON produto.ID = cliente.Produto_ID INNER JOIN Compradores compradores WITH (NOLOCK) ON compradores.ID = produto.Comprador_ID WHERE compradores.ID = @Comprador_ID AND cliente.Produto_ID = @Prodtuo_ID AND cliente.DocumentoTipo = @DocumentoTipo; END   END   ELSE BEGIN   IF(ISNULL(@Comprador_ID,0) > 0 AND @Produto_ID > 0)   BEGIN SELECT cliente.*, compradores.ID FROM Cliente cliente WITH (NOLOCK) INNER JOIN Produto produto WITH (NOLOCK) ON produto.ID = cliente.Produto_ID INNER JOIN Notas notas WITH (NOLOCK) ON notas.ID = produto.NVenda_ID INNER JOIN Compradores compradores WITH (NOLOCK) ON compradores.ID = notas.Comprador_ID WHERE compradores.ID = @Comprador_ID AND cliente.Produto_ID = @Produto_ID AND cliente.DocumentoTipo = DocumentoTipo; END   END   RETURN; </code>
       
      faço um join na tabela clientes, esse campo é de lá, e na tabela clientes o caminho do arquivo está salvo certinho, completo com o nome do arquivo.
      Alguem tem alguma ideia do que está errado ?
    • By k9studio
      Olá Amigos,
      se alguem puder dar um help fico muito grato
      seguinte:
      estou criando um sistema de login com cookie
      todas as paginas fica no patch
      www/htdocs/script/
      quando logar no dominio.com.br liberar o acesso no  cliente.dominio.com.br tambem
      acesso:dominio.com.br
      ou
      quando logar no cliente.dominio.com.br liberar o acesso no dominio.com.br tambem
      acesso:cliente.dominio.com.br
      e guando deslogar quebrar conxao com os dois
      existe uma maneira de fazer isso?
       
    • By Kefatif
      Prezados boa tarde.
       
      Preciso bloquear a edição de um date input de forma que só seja possível selecionar a data através do calendário.
       
      Alguém pode me ajudar?
       
      Utilizo php, html e js.
       
      <input type="date" value="<?php echo $data ?>" name="datacoleta" class="form-control" required style="width:100%;">  
      Agradeço desde já.
    • By Kefatif
      Prezados boa tarde.
       
      Preciso bloquear a edição de um date input de forma que só seja possível selecionar a data através do calendário.
       
      Alguém pode me ajudar?
       
      Utilizo php, html e js.
       
      <input type="date" value="<?php echo $data ?>" name="datacoleta" class="form-control" required style="width:100%;">  
      Agradeço desde já.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.