Ir ao conteúdo
  • Cadastre-se
cesar3m

Como filtrar acesso ao site para usuários ativos?

Recommended Posts

Boa noite;

Para acessar o meu site era bem simples, bastava cadastrar com um nick, senha e email que sabe-se lá se existe e depois inserir o nick e senha no acesso. Mas aí eu inventei de somente permitir acesso a usuários que validarem a conta por e-mail. Na verdade, a parte do link de email ainda nem fiz, ainda preciso descobrir como vou fazer isso....

O que já fiz foi:

Inseri na tabela usuários a coluna 'estadodaconta', ela terá os valores: 'pendente', 'ativa', 'excluida' e 'banida'.

E na página 'acesso.php' modifiquei o código como mostra abaixo:
 

include "../bancodedadosconfig/tabelacadastro.php"; $conexaotabelausuarios = new mysqli($host, $username, $password, $database);if (mysqli_connect_errno()) trigger_error(mysqli_connect_error()); $buscarusuario = "SELECT nick, senha, estadodaconta FROM usuarios WHERE nick='".$_POST[nick]."' AND senha='".$_POST[senha]."'";$usuarioencontrado=$conexaotabelausuarios->query($buscarusuario);$estadodaconta = $usuarioencontrado['estadodaconta'];//if ($usuarioencontrado->num_rows== 1) if(($usuarioencontrado->num_rows== 1) && ($estadodaconta=="ativa")){                        $_SESSION['nick']=$_POST['nick'];                        $_SESSION['login'] = md5($_SERVER['HTTP_USER_AGENT']);                        echo "<script>location.href='../paginadousuario/room.php'</script>";        }        elseif(($usuarioencontrado->num_rows== 1) && ($estadodaconta=="pendente"))        {                        unset($_SESSION['nick']);unset($_SESSION['senha']); echo "A validação desta conta encontra-se pendente. Por favor, verifique sua caixa de e-mails. <br>Caso não haja um email de validação na Caixa de Entrada, verifique os e-mails excluídos. Seu servidor pode ter marcado o e-mail como SPAM<br><br><a href='../../../index.php'>Clique aqui para voltar</a>";mysql_close($conexaotabelausuario);        }        elseif(($usuarioencontrado->num_rows== 1) && ($estadodaconta=="banida"))        {                        unset($_SESSION['nick']);unset($_SESSION['senha']); echo "Esta conta se encontra banida. <br><a href='../../../index.php'>Clique aqui para voltar</a>";mysql_close($conexaotabelausuario);        }         elseif(($usuarioencontrado->num_rows== 1) && ($estadodaconta=="excluida"))        {                        unset($_SESSION['nick']);unset($_SESSION['senha']); echo "Esta conta se encontra excluída. <br><a href='../../../index.php'>Clique aqui para voltar</a>";mysql_close($conexaotabelausuario);        }        else                        {                        unset($_SESSION['nick']);unset($_SESSION['senha']); echo "Usuário não cadastrado. <br>'.$estadodaconta'<a href='../../../index.php'>Clique aqui para voltar</a>";mysql_close($conexaotabelausuario);}

Porém, com este código está dando o seguinte erro:

Fatal error: Cannot use object of type mysqli_result as array in /home/y67ipajo/public_html/_arquivos/php/acesso/acesso.php on line 40
 

A linha 40 seria a linha em branco depois de: 

$estadodaconta = $usuarioencontrado['estadodaconta'];

Então o erro está em volta desta parte:
 

$buscarusuario = "SELECT nick, senha, estadodaconta FROM usuarios WHERE nick='".$_POST[nick]."' AND senha='".$_POST[senha]."'";$usuarioencontrado=$conexaotabelausuarios->query($buscarusuario);$estadodaconta = $usuarioencontrado['estadodaconta'];

Como resolvo isso? Lembrando que antes de incluir em todo este código, 'estadodaconta', e && ($estadodaconta==" ")); o código funcionava perfeitamente...

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui resolver o problema e cai em outro!

As condicionais estão funcionando, porém, como codifiquei as senhas com SHA1, todo usuário novo cadastrado após esta codificação de senha dá-se como usuário não cadastrado, por que a senha postado no campo senha do form de acesso não correspode a senha cadastrada codificada. Verei como resolver isso....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×