Ответ - нет. Вам не нужно ничего проверять, действителен ли хеш или нет.
Когда вы создаете элемент Zend_Form_Element_Hash
, он автоматически добавляетВалидатор (используя Zend_Validate_Identical
) для вашей формы и зарегистрируйте свой хэш в новом сеансе пространства имен.
После этого, как только вы вызовете метод isValid()
, если CSRF, сохраненный в сеансе при визуализации страницы,не совпадает с отправленным в последнем запросе, идентичный валидатор завершится ошибкой и выдаст ошибку.
Редактировать: Кроме того, вы можете добавить соль в свой элемент и хешгенерируется в соответствии со следующим шифрованием: md5(mt_rand(1,1000000) . $this->getSalt() . $this->getName() . mt_rand(1,1000000)
.
Чтобы ответить на ваш второй вопрос в вашем комментарии, два элемента не вызовут конфликтов сеанса, поскольку пространство имен, используемое для хранения хеша, определяется по трем критериям:
- Имя класса
- Соль
- Имя элемента
Например, ваш элемент, вероятно, будет храниться в этом пространстве имен: " Zend_Form_Element_Hash_unique_ hash ", где "unique" - это солт-значение и хэш-имя элемента.