Flash Uploader имеет свой собственный идентификатор сессии ..... почему? - PullRequest
0 голосов
/ 17 февраля 2009

Я сейчас ломаю голову о стол. У меня есть флэш-загрузчик, который помещает каждый файл через upload.php, который миниатюрирует изображения, и перемещает их в соответствующие каталоги. Когда я загружаю в IE, он функционирует отлично (никогда не думал, что скажу это), но в Firefox, когда flash выполняет upload.php, он имеет свою собственную переменную сеанса, которая отличается от той, которая используется для просмотра остальной части site, поэтому вошедший в систему пользователь больше не входит в систему, поэтому его ИД пользователя не читается и не вставляется в БД, а также представляет собой простой фрагмент кода, подобный этому:

$_SESSION["uploaded_ids"][] = $inserted_id;

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

Что я могу сделать? вопрос о загрузчике таков:

MultiPowUpload

Ответы [ 5 ]

1 голос
/ 27 марта 2009

Flash ДОЛЖЕН нормально иметь доступ к вашим файлам cookie, но FileReference является странным исключением в MSIE, и, как вы, очевидно, заметили, не будет отправлять файлы cookie текущего сеанса.

Я справился с этой проблемой, передав идентификатор сессии во флэш-память (либо с помощью flashvars, либо в виде отдельного удаленного сервиса), а затем передав идентификатор сессии в строку запроса при публикации выгрузки FileReference. Затем вы можете начать сеанс в PHP с принудительным идентификатором.

0 голосов
/ 06 сентября 2011

когда вы отправляете запрос в PHP, флеш-память должна передавать с ним текущий идентификатор сессии, к сожалению, flash не делает то же самое, поэтому необходимо передать идентификатор сессии в качестве переменной URL на страницу php, чтобы ваш php получил этот сеанс. для получения дополнительной информации проверьте это.

0 голосов
/ 04 декабря 2009

Если вы хотите предложить Adobe исправить эту ошибку, вот ссылка для отслеживания ошибок:

https://bugs.adobe.com/jira/browse/FP-1044

К сожалению, вам нужно создать учетную запись для просмотра проблем, но они все равно есть.

Есть еще 3 ссылки, но переполнение стека мешает мне опубликовать их, потому что моя репутация слишком низкая.

0 голосов
/ 18 февраля 2009

Flash-подключения действуют как отдельные браузеры, flash не имеет прямого доступа к вашим cookie-файлам, поэтому обычно не может отправлять phpsessid. (если это не обходится с вызовами JS)

Но MultiPowUpload говорит, что они исправили это в v2.0, поэтому, если вы используете v2.0 и не настраивает sendBrowserCookie = false, это должно работать.

Наша команда решила эту проблему, сгенерировав токен в $ _SESSION при создании страницы. Этот токен затем добавляется в URL загрузки, и php связывает файл с этим токеном в xcache. Затем незавершенная ajax-функция вызывает php с правильным phpsessid и токеном для их сопряжения.

0 голосов
/ 17 февраля 2009

Если файл php выполняется через какую-то форму ajax, а не напрямую из браузера, я считаю, что сеанс не является постоянным. IICRC Firefox рассматривает вызовы ajax как новые сеансы браузера.

Если это звучит так, как будто это может иметь место, я обычно исправляю эти проблемы, вручную присоединяя PHPSESSID к концу вызова ajax. Надеюсь, это поможет.

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