【发布时间】: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) 站点的文件对文件副本,因此所有这些设置都是一样的
-
对不起,我似乎无法添加换行符