ВОпрос по header и HTTP

proWoke

Новичок
Вот сейчас в чужом коде капчи увидел такие строчки:

PHP:
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");                   
header("Last-Modified: " . gmdate("D, d M Y H:i:s", 10000) . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");         
header("Cache-Control: post-check=0, pre-check=0", false);           
header("Pragma: no-cache");                                           
header("Content-Type:image/png");
Зачем отправлять данные заголовки в файле, который генерирует капчу?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Заголовок Expires > Google и т.д.
 

AmdY

Пью пиво
Команда форума
c0dex
лучше уж translate.google.com здесь же всё читается на ура.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
AmdY
Я думал ему надо именно инфу о том, что они делают.
 

proWoke

Новичок
Я перезадал свой вопрос. Ответьте пожалуйста. Вопрос то вроде нормальный.
 

KorP

Новичок
proWoke
ну так ты нагугли что такое header("Content-Type:image/png"); и сразу ответ к тебе придёт :)
 

AmdY

Пью пиво
Команда форума
proWoke
чтобы картинка не кешировалась, потому что она и значение в сессии должно меняться каждый раз когда показывается форма, даже если там были не все поля заполнены, капча перегенерируется.

принцип работы с капчей:
1. формируем форму с картинкой.
2. показывается форма, подтягивается картинка и генерируется переменная в сессию.
3. отсылаем форму.
4. проверяем сходится ли код из формы с тем, что в сессии.
5. удаляем (unset) переменную из сессии
6.1 если всё ок сохраняем
6.2 если нет, то делается пункт 1
 
  • Like
Реакции: KorP

proWoke

Новичок
Спасибо. Вот только я видел в 1 примере другой принцип. Генерируется год, который меняется с каждый минутой, а когда идёт сравнение капч, то просто она генерируется по тому же алгоритму, который использовался при наложении на картинку. Но проверяется он функцией array_intersect(); И если элементы в этих множествах одинаковые, то значит верно ввёл капчу. Мне самому не нравится, этот способ. Т.к. код может поменяться, пока пользователь будет вводить капчу и из-за того, что код меняется только shuffle(). А сами буквы те же на протяжении минуты остаются. Имеет ли право на существование такой способ?
 

fixxxer

К.О.
Партнер клуба
А зачем такие сложности?

Все, как сказал AmdY, плюс каждый раз картинка отдается с уникальным урлом, хотя б ?$random приписать - и усё

Если так важен ГИПОТЕТИЧЕСКИЙ вариант "пользователь открыл сто окон с капчей" - писать в сессию массив с ключами в виде вот этих вот рандомов.
 
  • Like
Реакции: AmdY
Сверху