2011-10-13 42 views
2

我很难过这个。我有一个仅限会员的页面,当用户没有登录时会强制用户登录(重定向到登录页面)。目标URL($ _SERVER ['REQUEST_URI'])存储在会话中,并且当用户成功登录时,他/她将被引导至该目标页面。这在浏览器中可以正常工作。从Word文档打开页面时,PHP会话没有注册

但是,当我在Word文档中将链接指向仅限成员的页面并单击它以在浏览器中打开它时,会话变量无法注册。我是否错过了会导致此类问题的设置?

这里是验证码。

<?php 
    session_start(); 

    if((!isset($_SESSION['uid']))||($_SESSION['uid']=='')){ 
     $_SESSION['targetURL']=$_SERVER['REQUEST_URI']; 
     header('Location: /login.php') ; 
     exit(); 
    } 
?> 

同样,浏览器中浏览时,或在地址栏直接输入网址...但是从Word中的任何链接不允许会话登记工作正常。

+0

没有理由为什么从文字处理器的链接应该导致这样的问题。我会建议在脚本开始处使用print_r()来转储$ _SESSION和$ _SERVER,以查看发生了什么。 – halfer

+0

哦,是的,请检查浏览器中是否启用了会话cookie ;-) – halfer

+0

感谢您的回复。我会尝试转储。 Cookie已启用:)。如果我将同一个word doc转换为pdf并点击该链接,它可以正常工作!我想MS是出来让我......再次...... – soomani

回答

3

我知道这是一个旧帖子,但我碰到了同样的问题。 Microsoft有知识库文章,解释此行为...

出现此行为是因为Office会话独立于您可能已提供用户凭据的Web浏览器会话。

如果SSO系统完全依赖于会话cookie信息,SSO系统不能出现起作用,因为相同的用户从多个会话移动。

这篇文章接着说这是设计,是SSO系统的限制,而不是Microsoft Word的限制。文章底部提供了一些“修复”系统的解决方案,尽管文章承认它们增加了很大的复杂性。如果您确实需要通过Word文档工作的链接,则必须实施其中一种建议的解决方案。

http://support.microsoft.com/kb/899927

然而,作为一个快速的解决方法,如果你没有使用Word文档,您可以将文档转换为PDF格式,它不会有同样的问题。