la forma de evitar los bots me parece genial y creo que la implementare. Ya incluso tenia un recaptcha para solicitar el mail de recuperacion pero creo que pondre al enviar la respuesta al mail para ver el resultado si es exitoso..
Ahora, sobre el hash no creo estar entendiendo bien las cosas: el concepto de hash, estoy viendo videos y leyendo pero algo no me queda)..
lo que venia haciendo (al margen del algoritmo) es lo que sigue:
Código:
$codigo = md5(uniqid(rand(), true));
// insertaba $codigo en la base de datos
//luego
$link = 'activacion.php?email=$email&key=$codigo'
// Y en su respuesta
if($codigo == $_GET['key'])
Y aqui es adonde creo estar mal. Estoy simplemente, generando un numero aleatorio, guardando y enviandolo para comprobar luego el mismo..
quizas deberia estar haciendo en realidad algo como..
Código:
$codigoAleatorio = md5(uniqid(rand(), true)); // Lo guardo en la base
$codigoDeActivacion = md5($idusuario.$email.$codigoAleatorio);
$link = 'activacion.php?id=$idusuario&email=$email&key=$codigoDeActivacion'
// LUEGO POR GET
// IF id, email y key estan en la url
if($codigoDeActivacion === md5($_GET['idusuario'].$_GET['email'].$codigoTraidoDeLaBase))
asi, el atacante deberia acertar en la url no solo el email y un codigo aleatorio, sino tambien el id y la composicion de dicho codigo?