Я бы не включил user_id в качестве параметра URL, я бы просто использовал хеш.
Как только кто-то переходит на ссылку, хэш должен быть перепроверен с теми, которые хранятся в вашей базе данных, и, если они совпадают, извлекает информацию, связанную с этим электронным письмом (т.е. имя пользователя, электронная почта). Когда они отправятся заполнять форму, вы можете проверить, совместимы ли их введенные данные.
Например, если пользователь забыл свой пароль, как только он вводит свой адрес электронной почты, я сбрасываю его пароль на случайное значение (сохраняемое как хеш) и использую этот сохраненный хеш в качестве параметра URL при их сбросе. адрес электронной почты.