password_verify bipolar intercalando entre funcionar e não funcionar
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.Discussão (0)
Carregando comentários...