Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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?
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"
é 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']))); $errormsg .= "usuario ou senha invalidos";
$error = 1; if ($dados['statusUsuario'] != 1) {
$error = 2; // usuário está inativo
}
}
?>
é só dar uma melhoradinha na lógica e já era... mas é por aí
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']))); $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!
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.
AND statusUsuario = '1'
so passa mais uma condição select