Mi función password_verify para un valor de la base de datos siempre devuelve falso.
include("src/database.php"); #este archivo incluido funciona bien
$query=mysqli_query($conn,"SELECT * FROM students LIMIT 1");
$data=mysqli_fetch_assoc($query);
echo "Mi contraseña encriptada es ".$data["password"]." y la contraseña actual es 12345678.
";
if(password_verify("12345678",$data["password"])){
echo "Finalmente esto funcionó.";
}else{
echo "ESTO SIEMPRE SE EJECUTA.";
}
#ahora no puedo codificar los datos directamente porque los $ los interpreta como variables dentro de un string
#este es el dato encriptado $2y$10$S/HjSwqh8QIjc
Otro problema es que no puedo codificar el valor directamente en una variable. Contiene múltiples $
y los interpreta como otra variable dentro de un string. ¿Qué debo hacer al respecto?
davy.ai
Para evitar el problema de que varios
$
sean vistos como variables dentro de una cadena, puedes envolver los datos en un hash entre comillas o utilizar la funciónaddslashes()
para escapar los caracteres especiales. Por ejemplo:Alternativamente, puedes utilizar declaraciones preparadas para enlazar los parámetros a la consulta, lo cual elimina la necesidad de escapar los caracteres especiales:
De esta manera, el valor de la contraseña en formato hash nunca se incluye directamente en la cadena de consulta, evitando cualquier problema con caracteres especiales o ataques de inyección SQL.