2014-12-20 40 views
2

我開發了一個簡單的模式框,並且我添加了$_SERVER["HTTP_REFERER"],所以從特定的引用者不會出現。它工作正常,但$_SERVER["HTTP_REFERER"]不適用於Mozilla。有沒有其他方法可以做到這一點?

我使用的簡單的PHP代碼:

if ($_SERVER["HTTP_REFERER"] == "www.thedomain.com/article.php"){ 
//Code to do not show the modal box 
}else{ 
//code to show the modal box 
} 
+4

引用者將包含協議'http://執行'var_dump($ _ SERVER ['HTTP_REFERER'])'來查看它實際包含的內容。 –

+4

但是,完全取決於客戶端瀏覽器發送或不發送或修改HTTP_REFERER字符串,或者發送任何想要的或用戶配置的字符串。它可能根本不存在,並且通常相當不可靠。 –

+0

嘗試'print_r($ _ SERVER);'查看您有權訪問哪些變量。它不會依賴於瀏覽器 - 如果Firefox在特定情況下無法看到它,其他人也無法看到它。 – halfer

回答

1

如上所述,您不能依賴引用者。有些用戶選擇完全禁用該引用來源,並且通過HTTPS它始終爲空。

只需使用查詢字符串參數,如&modal=true

+0

我不能使用查詢字符串! :-( –

1

「HTTP_REFERER」 - 頁面其中提到用戶代理到當前頁面的地址(如果有的話)。這由用戶代理設置。並非所有的用戶代理都會設置它,有些提供了將HTTP_REFERER修改爲功能的功能。總之,它不能真正被信任。

http://php.net/manual/en/reserved.variables.server.php

換句話說,你不應該依賴於你的代碼此值。這就是說,獲取這些信息並不是一個更好的可靠方法。您並不總是可以從用戶的瀏覽器訪問這些信息。