0

我有一个基于会话变量的用户登录数据构建的基于 Web 的系统。

有时,当用户登录并尝试将表导出到 csv 或 xls 时,会话数据似乎已被擦除,并且用户被“踢出”系统。

这是我用来提供文件的标头代码。

    header("Pragma: public");
    header("Expires: 0");
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    header("Content-Type: application/force-download");
    header("Content-Type: application/octet-stream");
    header("Content-Type: application/download");
    header("Content-Disposition: attachment;filename=file.xls");
    header("Content-Transfer-Encoding: binary ");

如果它有帮助,它似乎在 ie6 上更普遍。我想知道是否有人遇到过类似的问题。

这是我尝试过的最新标题。仍然没有运气。还在 FF/Opera/Safari 中测试了完全相同的程序,它们很好。

header('Cache-Control: no-store, private, no-cache, must-revalidate');     // HTTP/1.1
    header('Cache-Control: pre-check=0, post-check=0, max-age=0, max-stale = 0', false);  // HTTP/1.1
    header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');                  // Date in the past  
    header('Expires: 0', false); 
    header('Last-Modified: '.gmdate('D, d M Y H:i:s') . ' GMT');
    header('Pragma: no-cache');
    header("Content-Type: application/vnd.ms-excel");
    header("Content-Disposition: attachment;filename=$fileName");
            header("Content-Transfer-Encoding: binary ");
4

1 回答 1

3

Pragma: public头完全不适合已登录的用户,并且无济于事。

我也有点困惑为什么你使用这么多Content-Type标题。只选择一个和一个。

最后,这些是您明确设置的标题......您没有任何电话session_destroysetcookie浮动是吗?

于 2009-09-03T14:55:30.753 回答