我有一個使用Zend MVC框架的PHP應用程序。對應用程序的每個請求的入口點位於/public/index.php。瀏覽器檢測和Zend MVC
我有一個瀏覽器類,有功能來檢查用戶的瀏覽器是否與應用程序兼容或不兼容。
我的兩難處境是,index.php是針對每個控制器調用執行的。所以有可能這個文件在同一頁面內被多次執行,因此重定向成爲一個問題。解決循環問題的最佳方法是什麼?
感謝
我有一個使用Zend MVC框架的PHP應用程序。對應用程序的每個請求的入口點位於/public/index.php。瀏覽器檢測和Zend MVC
我有一個瀏覽器類,有功能來檢查用戶的瀏覽器是否與應用程序兼容或不兼容。
我的兩難處境是,index.php是針對每個控制器調用執行的。所以有可能這個文件在同一頁面內被多次執行,因此重定向成爲一個問題。解決循環問題的最佳方法是什麼?
感謝
$i = 0;
if ($i === 0)
{
// put everything currently in index.php into here
$i++;
}
關於你提到的「兩難」,這完全聽起來像一個不同的問題,我真的會避免在每個控制器電話呼叫的index.php。這是我認爲的根本問題。如果你必須,我想你可以使用Session來跟蹤用戶對各個頁面的呼叫。
但index.php應該只是一個入口點,任何進一步執行的代碼邏輯應該完全不知道它的存在。
關於瀏覽器檢測:
據我所知,目前還沒有確定的ZF組件,它決定了瀏覽器爲您服務。有兩種方法可以解決這個問題。一種是使用$_SERVER["HTTP_USER_AGENT"]
根據用戶代理字符串檢查瀏覽器。
另一種方式當然是客戶端檢測。大多數JS庫都提供了這樣的方法;因爲大多數jQuery用戶都知道jQuery已棄用它的jQuery.browser
功能,但它們目前仍然可用。
但是,如http://docs.jquery.com/Utilities/jQuery.browser所示,建議您替代客戶端瀏覽器檢測,檢查所需的特定功能。
你應該在前端控制器插件中做到這一點。有幾種方法依賴於您的調度過程的要點來調用。
看http://framework.zend.com/manual/en/zend.controller.plugins.html