Переменные сессии

alexblade

Новичок
Вопрос 1

index.php
Код:
 <? session_cache_limiter('nocache');
session_start();
$scode = isset($_SESSION['icode']) ? $_SESSION['icode'] : '';
unset($_SESSION['icode']);
session_write_close();?>
<html><head><link rel="next" href="index.php">
почему пока link rel="next" равен index то $scode пустая ? как только меняем линк на index1 $scode всё ок.

Вопрос 2

index.php
Код:
<? ssession_cache_limiter('nocache');
session_start();
//unset($_SESSION['icode']);
session_write_close()?>
<html><head>
далее страничка рисует форму в которой вызывается <img src=secureimage.php>.
во время этого вызова src=secureimage.php в сесию пишется код который при сабмите формы потом сверяется с пользовательским.
Вопрос в следующем - захожу я на индекс и ничего не выберая и не нажимая в форме нажимаю другую ссылку на этом же сайте ,грузится другая страница и я нажимаю в браузере "назад" снова открывается форма а secureimage остался прежний (и код в сесси тоже). не перезагрузился. как можно добится не сильно мудрствуя чтоб image сто процентно перегружался ?

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

dimagolov

Новичок
1. наверное потому, что в index1 $_SESSION['icode'] устанавливается. в приведенном коде она нигде не устанавливается и не выводится, так что понять по каким признакам что-либо определяется невозможно.

2.
а secureimage остался прежний (и код в сесси тоже). не перезагрузился.
этот вопрос никоим образом не связан с сессиями, а исключительно с заголовками кеширования, которые отдает secureimage.php. посмотри что за заголовки посылаются-принимаются при этом.
 

alexblade

Новичок
оба вопроса исходят из одного алгоритма. в обоих $_SESSION['icode'] генерируется при вызове img src=secureimage.php. в обоих вопросах лиш немного отличается код на index.php

1. акцентирую внимание что приложенный код взят с index.php (см.выше), и link rel="next" href="index.php" т.е. указывает на себя.
как только линк рел указывает на что угодно (даже несуществующую страницу) только не на себя тогда $scode благополучно появляется. :confused:

при чом по link rel="start", rel="contents" и т.п. запросов не происходит, а по этому link rel="next" происходит запрос и приходит ответ. получается когда он указывает на себя при втором запросе в этом же заголовке хттп, $_SESSION['icode'] уже пустая (в первый раз был ансет) и она присваивается $scode. т.е. Дима то о чём мы говорили ранее ;) по тексту в боди хтмл генерится хттп запрос (чтоб ты не кричал, заголовк с двумя ответами (на два запроса тойже index), естественно приходит до хттп тела) . с какого бодуна link rel="next" провоцирует второй запрос ?

2. по большому счету да - заголовки кэширования
в index такие заголовки (выше указал)
session_cache_limiter('nocache');

в secureimage.php такие
session_cache_limiter('nocache');

при нажатии "назад" ответ заголовка приходит только от index (есть nocache всё как положено) и от rel="next" ,ни одна картинка включая secureimage не запрашивается (на опера 8.5, фф2, ие6)
:confused: как бы не мудрствуя лукаво заставить secureimage перегрузится ?
 

alexblade

Новичок
например так,
<img src="secureimage.php?act=<?=rand(0,9)?>">
?

PS если да то срабатывает кроме Оперы. чтоб и в опере сработало есть несложные варианты?
 

alexblade

Новичок
на маленьких диапазонах большой разницы не заметил :)

так как же с оперой?
 

dimagolov

Новичок
alexblade, на маленьких диапазонах велика вероятность получить подряд 2 одинаковых числа

с оперой то же что и с другими, ИМХО, тебе с ней просто не повезло (см. выше)

-~{}~ 28.07.09 10:30:

правда, это все помогает только тогда, когда страничка с img запрашивается с сервера по-новому. можно еще ссылку в img менять js-ом (то есть случайный параметр генерить JS-ом по onload), ничего особо страшного не будет, если картинка успеет запроситься дважды.
 
Сверху