Hola chicos, estoy haciendo un sistema de recuperación de contraseña. Cogí una idea de un chico de youtube a la hora de hacer la seguridad para que si alguien cambia el token o el usuario, no se viese el input, el problema es que desde primeras no se ve.
El correo lo manda, genera el token, y la URL, pero creo que no valida la URL con el usuario y el token, os dejo el código en sí.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<?php
if(isset($_GET['email']) AND isset($_GET['token'])){
require "conexion.php";
$email = $mysqli->real_escape_string($_GET['email']);
$token = $mysqli->real_escape_string($_GET['token']);
$sql = $mysqli->query("SELECT token FROM usuarios WHERE email = '$email'");
$row = $sql->fetch_array();
if($row['token'] == $token) {
?>
<?php
if(isset($_POST['codigo'])){
require "conexion.php";
$pass = $mysqli->real_escape_string($_POST['pass']);
$pass = hash('sha512',$pass);
$act = $mysqli->query("UPDATE usuarios SET pass= '$pass', token = '' WHERE email = '$email'");
if ($act){
echo "Su contraseña se ha actualizado correctamente";
header("Refresh: 1; URL=../index.php");
}else{
echo "Ha habido un problema a la hora de actualizar la contraseña";
}
}
?>
<form action="" method="post">
<input type="text" placeholder="Ingrese su nueva contraseña" name="pass" required/>
<input type="submit" value="Cambiar contraseña" name="codigo"/>
</form>
</body>
<?php } } ?>
</html>