【问题标题】:PHP session lost, multiple sites in IISPHP会话丢失,IIS中有多个站点
【发布时间】:2016-06-14 15:04:52
【问题描述】:

这里有点奇怪,这可能是因为我没有完全理解 IIS。

我们在 IIS 中有两个网站(我们使用 this method 配置)。一个被命名为例如“https://theServerName.domain.com”,另一个是“https://development.domain.com”。第二个基本上是第一个的克隆,允许我们在“上线”之前测试更改。

登录脚本的工作原理如下:

  • 加载索引页面,页面检查会话,如果会话不存在,则将用户发送到登录页面
  • 用户登录后,根据数据库检查凭据。如果凭据有效,则会创建一个会话并将用户发送回索引页面

这非常适用于“theServerName.domain.com”。但是,当我们登录到“developer.domain.com”时,会创建会话,但是当我们被发送回索引页面时,页面会检查会话并且找不到。

我很困惑,因为登录页面和登录验证页面的域是相同的,所以我唯一能想到的就是多个网站的情况是否令人困惑。

有什么想法吗?

编辑 1:我忘记了一个重要信息,即 这似乎只发生在 IE 8 中 - 在 Firefox 14.0.1、Opera 12.01、Chrome 21.0 和 IE 9 中测试和工作。

编辑 2:我不知道这是否有帮助,但 IE 9 会抛出错误“Internet Explorer 增强的安全配置正在阻止来自下面列出的网站的内容。javascript://void(0)”(这是点击“继续访问此网站(不推荐)”后,由于没有安装证书)

【问题讨论】:

  • 检查您的会话 cookie 设置 - 它们可能过于严格并设置为确切的主机名,不允许在同一域中的相似主机之间共享。
  • session_start() 是否位于“developer.domain.com”实例的页面顶部?
  • 感谢您的回复 Marc B - cookie 设置如下: session.cookie_path = / session.cookie_domain = 由于两个站点位于同一台服务器上,因此它们使用相同的 php.ini Blaine -是的,session_start() 位于我包含在所有页面中的“header.php”文件中 - 此外,正如我所解释的,该站点是原始 (theServerName.domain.com) 站点的文件对文件副本,因此所有这些设置都是一样的
  • 对不起,我似乎无法添加换行符

标签: php session ssl iis-7


【解决方案1】:

this answer 的帮助下,我终于意识到这个问题是由于 IIS 虚拟目录/应用程序中有一个下划线

【讨论】:

    猜你喜欢
    • 2013-06-28
    • 1970-01-01
    • 1970-01-01
    • 2013-08-10
    • 2012-05-09
    • 2012-06-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多