Buenas, podrías hacerlo así. Al registrarse, le asignás al usuario un id (común y corriente) como tenías pensado. Pero, además, le generás una clave aleatoria, que también grabás en la tabla de usuarios. En el link que le mandás, le pasás como parámetros, por ejemplo:
http://dominio.com/tu_script.php?id_...b5139c2e2705f5
Desde el script, hacés un select de la tabla usaurios para buscar un registro que tenga ese id_usuario y esa clave. Y ahí ya tendrías solucionado el tema. Si yo como usuario me pusiera a jugar con los id_usuario (cambiándolos para ver qué pasa), no conseguiría mayor cosa (a menos que también "embocara" justo alguna clave, lo que me parece altísimamente improbable).
¿Cómo armás la clave? Usando un random y aplicándole un md5 para encriptarlo. En realidad, con un random ya alcanzaría, pero encriptándolo tenés una clave aún más difícil de predecir.
El código para generar la clave podría ser algo tan simple como:
Código PHP:
$clave = md5(mt_rand());
echo $clave;
Al momento de activar la cuenta, entonces, sólo validás ambos datos y pasás el flag de la tabla que indica que el usuario está activo a 1 (si estás usando flags, que me parece lo más cómodo en este caso).
Espero que te sirva o te de alguna idea.
Suerte
Califa