会话在外部主机上搞砸了

Posted

技术标签:

【中文标题】会话在外部主机上搞砸了【英文标题】:Sessions get messed up on external host 【发布时间】:2011-04-25 09:49:17 【问题描述】:

问题听起来像这样: 使用会话登录在我的本地主机上运行完美,但是当完全相同的文件上传到我的主机(hostgator)时,会话不会,或者它们会搞砸。注销功能在主机上也不起作用。

我检查过,每个页面都有 session_start();在里面。

会话没有被破坏,即使我的 logout.php 看起来像这样:

<?php
session_start(); 
$_SESSION = array();
session_unset();
session_destroy();
header("location:index.php");
exit();
?>

有什么建议吗?

【问题讨论】:

检查session configuration在两台服务器上是否相同。 会话在一台网络服务器上是否正常工作,但现在您在一个不使用粘性会话的网络场上? 搞砸了:我登录到一个帐户,然后我退出并再次登录到另一个帐户,它登录到第一个帐户,而不是当前帐户。跨度> 【参考方案1】:

我注意到在带有 Firebug 的 Firefox 上您的页面都被缓存了。您的会话工作正常,但您的页面被缓存,导致登录和注销相当(混乱)。

为您的动态页面禁用 HTTP 缓存。

查看 Firebug 输出:

响应标头

HTTP/1.1 304 Not Modified
Date: Thu, 14 Oct 2010 13:16:50 GMT
Server: Apache mod_fcgid/2.3.5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635
Connection: Keep-Alive
Keep-Alive: timeout=5, max=100
Expires: Thu, 14 Oct 2010 16:16:50 GMT
Cache-Control: public, max-age=10800

请求标头

GET / HTTP/1.1
Host: www.piataterenuri.info
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Cookie: PHPSESSID=55aea3f792334052dc673f85feb0b54a
If-Modified-Since: Wed, 13 Oct 2010 13:47:53 GMT
Cache-Control: max-age=0

PHP 手册已经有一个关于如何禁用缓存的示例:

http://php.net/manual/en/function.header.php

<?php

header("Cache-Control: no-cache, must-revalidate"); 
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past

?>

【讨论】:

那么我该如何在所有页面上做到这一点?我更改了标头的缓存值,还是主机的 php.ini 上有一些选项? 我会将它放入我的 phps 中,看看我是否可以注销... 编辑:似乎还没有修复....

以上是关于会话在外部主机上搞砸了的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI 模态演示在 iPad 模拟上搞砸了?

UITableView 布局在 push segue 和 return 上搞砸了。 (iOS 8、Xcode beta 5、Swift)

RecyclerView的行项目视图隐藏/显示在Recyclerview的滚动上搞砸了

具有express-sessions和express-mysql-session的NodeJS没有设置会话。我搞砸了哪里?

.htaccess 搞砸了 .php 扩展名?

在外部 js 文件中使用会话