marsolim 110 Denunciar post Postado Março 30, 2020 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