Ir para conteúdo

POWERED BY:

marsolim

password_verify bipolar intercalando entre funcionar e não funcionar

Recommended Posts

fala rapaziada tudo bem:? então tô com esse problema que apareceu agora. costumava usar sha256 pra hashear senha e agora resolvi usar o password_hash nativo do php só que a parada quando vou logar funciona hora sim hora não intercalado. exemplo eu tento logar e dá usuário e senha não confere, aí na segunda tentativa loga certinho. aí eu deslogo e tento logar e dá senha e usuário não confere de novo. tenho que tentar duas vezes pra logar. esquisito que no firefox e no ie11 isso não ocorre, só ocorre no chrome, no opera, no edge e no vivaldi que foram os que testei. e mais esquisito ainda que no ie apesar de não precisar tentar logar duas vezes mas quando deslogo aparece a mensagem de usuário e senha não confere na página de login sendo que nem passei pela página de logar. as porção de código referente estão abaixo

 

validacadastro.php

$hashsenha = password_hash($senha, PASSWORD_DEFAULT);

 

login.php

$senha = mysqli_real_escape_string($con, $_POST['senha']);

$sql = "SELECT * FROM usuarios WHERE usuario = '" . $usuario . "'";

if($result = mysqli_query($con,$sql)){

        $num = mysqli_num_rows($result);

        if($num > 0){
            $row = mysqli_fetch_assoc($result);
            if(password_verify($senha, $row["senha"])){
                //segue o resto da parada...

obs: tentei usar BCRYPT no lugar de PASSWORD_DEFAULT mas aí nem gravou a senha no banco.

tem alguma explicatória lógica pra isso?

grato a todos

 

EDIT 1

 

implementei mais os teste de verificação e descobri que o problema não é no password_hash mas é na verificação do nome de usuário o que faz a coisa ficar mais esquisita ainda. fiz o teste botando um número nas duas possibilidade de erro que faz exibir a mensagem 'usuário e senha não confere' assim

    if($result = mysqli_query($con,$sql)){

        $num = mysqli_num_rows($result);

        if($num > 0){
            $row = mysqli_fetch_assoc($result);
            if(password_verify($senha, $row["senha"])){
                //cria seção com os dados do usuario
            }else{
                $status = "Nome de usuário e senha não conferem. Por favor, verifique seus dados de login e tente novamente! 1";
            }
        }else{
            $status = "Nome de usuário e senha não conferem. Por favor, verifique seus dados de login e tente novamente! 2";
        }

    }else{
        $status = "Desculpe mas não foi possível efetuar sua entrada nesse momento. Por favor, tente novamente dentro de alguns instantes!";
    }

 

retorna a mensagem de número 2 ou seja o nome de usuario não tá reconhecendo na primeira tentativa.

 

EDIT 2

 

já resolvi aqui. descobri que de alguma forma estranha um script jquery na página de login tava interferindo no negocio todo.

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.