Недавно столкнулся с задачей работы FancyUpload и сессиями в PHP. В некоторых ситуациях нам необходимо проверить сессионные переменные. Всё бы вроде понятно, на странице размещаем форму загрузки, а в коде обработчика делаем проверку, и вроде ID сессии запрошенной страницы и запросов AJAX со страницы должны быть идентичными. Однако при загрузке скрипт отвечающий на AJAX-запросы стартует новую сессию, соответственно идентификатор сессии получается другой. Решением которым воспользоваться делюсь тут. Итак, т.к. AJAX запрос в FancyUpload производиться методом GET, соответственно, в качестве дополнительного параметра нам можно отправить значение ID сессии. При инициализации FancyUpload делаем следующее:
url: 'fancyupload3/script.php?sid=<?php echo session_id(); ?>',
Для тех, кому не приходилось с этим сталкиваться, отмечу, что по умолчанию ID сессии передаются автоматически браузером в виде cookies-значения PHPSESSID. Здесь же мы будем передавать переменную сессии в запросе, и устанавливать её вручную.
В скрипте-обработчике устанавливает значение параметра сессии, таким методом:
if (!isset($_GET['sid'])) die; # прекращаем выполнение если не передан параметр session_id($_GET['sid']); # задаем ID сессии
Ну вот, собственно всё.