Ir para conteúdo

POWERED BY:

Arquivado

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

deathnoterpg

[Resolvido] (validaçao de e-mail) Não logar se não estiver valida

Recommended Posts

oiee pessoal..

to com um pobleminha...

 

eu criei um cadastro com validação por email e deu tudo certo. Ele envia o email e quando o usuario clica no link que ele recebeu por email ele altera no banco de dados o o "ativado" para "Sim"

 

o poblema eh que no login mesmo se ele não estiver ativado ele consegue logar.. alguem me ajuda?

Quando a senha ou o login estão errados eu uso essa função:

e o usuario só vai pra a pagina restrita somente quando o $error for igual a 0 ($error = 0;)

entaum quando o php identificar que o usuario e senha estão certos mas o ativado for 'não' ele tem que mostrar um erro tmbe na query ($error = 1;)

 

eu sei q ta confuso o jeito de eu explicar por isso eu coloquei abaixo a função que eu uso para verificar se o usuario e a senha estão corretos, e quando não esta ele coloca um "$error = 1;"

 

entenderam?

olhem aki:

$query = $db->execute("select `id`, `username` from `players` where `username`=? and `password`=?", array($_POST['username'], sha1($_POST['password'])));

if ($query->recordcount() == 0)

{

$errormsg .= "usuario ou senha invalidos";

$error = 1;

}

 

quem puder me ajudar eu agradeço mto!

 

ops eu postei no lugar errado... mudem pra mim por favor?

Compartilhar este post


Link para o post
Compartilhar em outros sites

DEU CERTO...

 

^_^

vlw!

 

mas tipo...

quando o usuario não esta ativado ele tambem aparece que o login ou senha estão errados... como eu faço pra que apareça uma msg separada ???

tipo:

se o login e senha estão corretos mas a conta não esta ativada;

"sua conta são esta ativada"

Compartilhar este post


Link para o post
Compartilhar em outros sites

é só você verificar de acordo com o retorno do seu select..

 

Se o resultado vier num array

<?php
// Adiciona o campo statusUsuario 
$query = $db->execute("select `id`, `username`, `statusUsuario` from `players` where `username`=? and `password`=?", array($_POST['username'], sha1($_POST['password'])));
if ($query->recordcount() == 0){
  $errormsg .= "usuario ou senha invalidos";
  $error = 1;
}else {
  // VOCE GUARDA AS INFORMAÇÕES DENTRO DE ALGUMA STRING, VAMOS CHAMAR DE $dados
  if ($dados['statusUsuario'] != 1) {
    $error = 2; // usuário está inativo
  }
}
?>

 

é só dar uma melhoradinha na lógica e já era... mas é por aí

Compartilhar este post


Link para o post
Compartilhar em outros sites

AGORA SIMMM :joia: :clap:

 

VLW

<?php
// Adiciona o campo statusUsuario 
$query = $db->execute("select `id`, `username`, `ativado` from `players` where `username`=? and `password`=?", array($_POST['username'], sha1($_POST['password'])));
if ($query->recordcount() == 0){
 $errormsg .= "usuario ou senha invalidos";
 $error = 1;
}else if ($error == 0)
{
	$query = $db->execute("select `id`, `username` from `players` where `username`=? and `password`=? AND ativado= '1'" , array($_POST['username'], sha1($_POST['password'])));
	if ($query->recordcount() == 0)
	{
		$errormsg .= "Sua conta nao esta ativada!";
		$error = 1;
	}
}
?>

 

eu juntei a dica dos dois e deu certo VLW MSM!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esta é uma forma de você resolver um problema, porém não foi da maneira mais eficiente possível. O que acontece é que você está executando uma busca no banco (acesso ao HD) junto com a verificação de login e senha. Até aí tudo bem. Mas você não precisa acessar o HD denovo para executar outra consulta ao banco caso você tenha encontrado um registro com estes dados (usuário e senha).

O que você precisa fazer é, no lugar da segunda query, executa um fetch no objeto de retorno do banco de dados e verifica a informação que você já buscou e colocou na memória.

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.