2011-07-18 45 views
0

我的網站佈局:何處檢查GET/POST參數? (MVC)

的index.php: - 前端控制器 - 包括的header.php - 包括的template.php - 包括footer.php

前端控制器檢查URL,並決定要包含哪個模板,或者如果它是一個動作,則執行錯誤檢查並轉發到視圖。 我有一個搜索表單,它發佈輸入數據(使用GET方法)。前端控制器獲取它,調用「action_search.php」,如果出現錯誤則暫停,然後包含「search_template.php」,這將顯示搜索結果。到目前爲止,控制器檢查GET參數(它們存在,轉義等)並重定向到視圖,但是有人直接通過瀏覽器調用視圖?腳本將死於「未知GET參數」,因此必須再次進行查看。但它傷害MVC。那麼該怎麼做?

回答

1

使用mod_rewrite通過你的index.php強制一切,然後每一個請求將通過index.php以你想要的方式被處理,並且它可以決定做什麼。

1

您的MVC應該設置爲不允許用戶通過瀏覽器直接訪問您的視圖。使用.htaccess重寫規則將所有請求重定向到前端控制器。

+0

是的,感謝你的想法,它已經完成了,我忘了提及:)但無論如何,在此期間,我想出了我在同一時間使用腳本作爲動作和視圖......我的意思是,如果我做一個用戶添加,它有一個「action_useradd.php」動作,將他添加到數據庫並重定向到一個視圖,但它不能被允許嗎?視圖不能被稱爲動作,對嗎? – deeped

+0

另一件事,如果腳本不能直接調用,模塊就可以。現在:action_doSearch.php - >重定向到「searchList」模塊。網站看起來像:「www.sitename/searchList?what = sdrsdf#num = 424」但如果我只是打電話給「www.sitename/searchList」,那麼它會失敗,因爲它不會找到GET參數 – deeped

+0

是的,視圖不應該被稱爲行動。你不應該重定向到視圖,而應該包含它。在你的.htaccess文件中,添加一個禁止直接訪問視圖的規則。換句話說, – moteutsch

1

除了使用mod_rewrite/.htaccess「隱藏」頁面外,您還可以讓php頁面不能直接在不是您的http文檔根目錄的子目錄中訪問的目錄中訪問。

+0

說,你只需要在你的文檔根目錄和其他所有文件根目錄下的index.php文件中,不在文檔根目錄下的目錄中。檢查Zend Framework默認目錄樹的例子 – regilero