我一直使用的更phpish $this->_request->getPost('this')
和$this->_request->getQuery('that')
(這一個是沒有這麼多getGet的getquery insteado邏輯)。
這兩個最好的是什麼?(或者如果這是另一種更好的方式)
只是在選擇getQuery()
的快速解釋。措辭的選擇來自於它的數據類型,而不是它如何到達那裏。 GET和POST只是請求方法,攜帶各種信息,包括在POST請求的情況下,稱爲「發佈數據」的部分。一個GET請求沒有這樣的塊,它攜帶的任何變量數據都是url的查詢字符串的一部分(?之後的部分)。
因此,雖然getPost()
從POST請求的發佈數據部分獲取數據,但是getQuery()
從GET或POST請求(以及其他HTTP請求方法)的查詢字符串中檢索數據。
(請注意,GET請求不應該被用於任何可能產生的副作用,如改變一個DB行)
所以,在回答你的第一個問題,使用getPost()
和getQuery()
方法,這種方法,你可以確定數據源在哪裏(如果你不在意,getParams()
也可以工作,但可能包含額外的數據)。
用這種方法驗證php輸入的最佳做法是什麼?
驗證輸入的最佳位置是您首先使用的地方。也就是說,當你從getParams()
,getPost()
或getQuery()
中提取。通過這種方式,您的數據在您需要的地方總是正確的,如果您將它傳遞出去,就知道這是安全的。請記住,如果您將它傳遞給另一個控制器(或控制器操作),則應該再次檢查它,以確保安全。你如何做到這一點取決於你的應用程序,但它仍然需要檢查。
我同意並建議看看Zend Form,因爲您可以將過濾器和驗證程序附加到表單中,然後使用該表單對象驗證所有傳入輸入。永遠不要忘記它是一個表單對象 - 它也是一個過濾器/驗證器容器。 – 2010-10-13 04:53:06