Цель одноразовых номеров с формами, как правило, двоякая: гарантировать, что данные отправляются только один раз, и гарантировать, что пользователь действительно выполняет отправку. Второй пункт, помогающий защитить от подделки межсайтовых запросов: http://en.wikipedia.org/wiki/Cross-site_request_forgery
Работа с ними зависит от контекста. Если пользователь заполняет форму, и одноразовый номер завершается неудачно, обновите страницу (предварительно заполните данные), скажите что-нибудь мягкое, например «К сожалению, возникла проблема, проверьте введенные данные и повторите попытку». Действительный пользователь может нажать «Отправить», атака будет сорвана, или пользователь хотя бы узнал о происходящем.
Проверка может завершиться неудачей по нескольким причинам. Если у вас включена какая-либо форма кэша браузера, пользователь посещает одну форму (с данным одноразовым номером), затем переходит к другой (со своим собственным одноразовым номером) и возвращается к первой с помощью кнопки «Назад», одноразовый номер, скорее всего, потерпит неудачу. , Позволяя кешу браузера появляться, они не обновляли страницу, и ваш сервер, скорее всего, хранит только один действительный одноразовый номер для них в сеансе, поэтому они не будут совпадать. Допустимый вариант использования и невыполненный одноразовый номер (я не потерял бы сон, просто убедитесь, что форма повторно заполнена).
В целом моя рекомендация была бы такова: попросите пользователя отправить снова, неявно подразумевая, что он должен проверить свои входные данные, чтобы упростить отправку снова.