Ir para conteúdo

POWERED BY:

Arquivado

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

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

×

Informação importante

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