Сессии 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