Вам нужно будет сохранить session_id во всех запросах, передав его в качестве переменной. Я обещаю, что это не станет слишком грязным! Есть пара изменений, которые вам нужно будет сделать на странице, которая отображает флэш-память, а также скрипт, на котором она публикуется. Вам также нужно будет внести небольшие изменения в само приложение Flash, чтобы оно могло включать идентификатор сеанса при загрузке файла на сервер.
Во-первых, вы захотите предоставить flash с идентификатором сеанса, включив его в FlashVars. Вам понадобится страница, отображающая флэш-память, для предварительной обработки с помощью PHP, иначе не удастся сохранить сеанс. Убедитесь, что вы вызываете session_start () на странице, которая выводит Flash. Вы получите что-то вроде этого:
<object classid="clsid:(blah)" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" width="800" height="800" id="ZoomifyHotspotViewer">
<param name="flashvars" value="phpsessionid=<? print session_id(); ?>">
<param name="src" value="YourSWF.swf">
<embed flashvars="phpsessionid=<? print session_id(); ?>" src="YourSWF.swf" pluginspage="http://www.adobe.com/go/getflashplayer" type="application/x-shockwave-flash" width="800" height="800" name="YourSWF"></embed>
</object>
В частности, эта часть должна быть добавлена в тегах param и embed:
phpsessionid=<? print session_id(); ?>
Затем в приложении Flash, когда вы делаете запрос, у вас теперь будет доступ к идентификатору сеанса в переменной phpsessionid. Вам нужно включить значение в переменную POST с именем PHPSESSID (все заглавные буквы) - включите его, однако вы включаете другие переменные, такие как переменная 'dir', которую вы используете.
Включение этой переменной гарантирует, что при вызове session_start () на следующей странице сеанс будет восстановлен вместо запуска нового сеанса. Есть пара случаев конфигурации, когда это не происходит автоматически. Если это оказывается для вас случаем (то есть идентификатор сессии по-прежнему отличается на следующей странице), вам нужно сделать следующее на странице, которая обрабатывает загрузку:
session_id($_POST['PHPSESSID']);
session_start();
Это вручную заставит PHP обновить сохраненный сеанс с указанным идентификатором. Это даже не должно быть проблемой, с которой вам придется иметь дело, но если это так, вам, возможно, придется сделать что-то похожее на следующей странице, которую продолжает пользователь, или добавить общий случай ко всем страницам:
if (isset($_REQUEST['PHPSESSID'])) {
session_id($_REQUEST['PHPSESSID']);
}
session_start();
Убедитесь, что если вам в конечном итоге понадобится вызывать session_id () таким образом как установщик, то вы должны сделать это до вызова session_start ().