Сессии PHP и обратные вызовы JavaScript

Я использую swf-upload для обработки загрузки файлов на сайт, над которым я работаю.

Проблема заключается в функции перехвата, которая называется swf-upload.php. Если я захожу по URL-адресу, по которому он находится, он работает нормально, он правильно читает, запускает сеанс и получает права пользователя, но когда веб-страница вызывает его с помощью обратного вызова ajax, он утверждает, что сеанс пуст.

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

Есть идеи, что случилось?

2 ответа

Решение

Это известная проблема в swfupload, вам нужно передать свой идентификатор сеанса в конструктор swfupload, а затем воссоздать явным образом перезапустить этот сеанс в вашем удаленном файле, используя идентификатор сеанса, который вы передали следующим образом:

 // in your javascript file 
 swfu = new SWFUpload({
  upload_url: "http://<?=$_SERVER['HTTP_HOST']?>/scripts/swfupload2/upload.php",
  post_params: {"PHPSESSID": "<?=session_id()?>"}
 }

 // in your PHP file
 if (isset($_POST["PHPSESSID"])) {
  session_id($_POST["PHPSESSID"]);
 }

Может быть, вы могли бы передать идентификатор сессии явно через PHPSESSID в вашем URL AJAX? Вы можете прочитать его с помощью функции session_id() http://pl2.php.net/manual/en/function.session-id.php

Другие вопросы по тегам