Александр Талалаев, формально всё правильно. Но в контексте данного вопроса автор явно имел в виду не то, что вы написали, когда говорил про "сообщения, которые шифруются как пароль" :)
Ну вы либо токен как-то отдаёте на клиент, либо у вас вместо исполнения кода файл отдаётся как текст. В нормальных условиях такого не происходит.
Спросите у тестировщика, что у вас не так.
Разница огромная - у дива нет никакого поведения. Вешать событие - это кривой костыль, который для дива и не нужен, вдобавок. Действительно, самым простым решением было бы обернуть весь блок в ссылку, а не ссылку в блок, тут вы правы.
Попробуйте вместо сохранения в БД (ну или в дополнение к нему) добавить логирование запросов в файл, чтобы убедиться, что проблема именно с редиректами, а не с запросом.