2011-10-13 89 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格式,它不會有同樣的問題。