我正在爲我的控制器寫一個「catch all」方法,用於ajax。這就是所謂的「AJAX」:P使用PHP的幫助method_exists()
這是它目前看起來像
public function ajax($method = null) {
if (! $method OR ! request::is_ajax()) {
return false;
}
if (method_exists(array($this, 'searchModel'), $method)) {
echo $this->searchModel->$method();
}
exit;
}
在這種不明顯的情況下,我想了ajax先擺脫困境,如果它認爲它不是一個Ajax請求,然後檢查我的$this->searchModel
以查看它是否具有作爲ajax方法的參數傳入的方法。
如果它找到了方法,它應該回顯它的返回值然後退出。
我的問題是我不能得到method_exists()
找到方法!我知道它確實存在......我甚至硬編碼(用於測試目的)我確定存在的方法。
這讓我有點瘋狂,有人能告訴我我做錯了什麼嗎?
謝謝!
P.S.我正在使用Kohana框架,但我認爲這不重要。
UPDATE
你覺得我暴露內部方法名稱的JavaScript(即公衆)可能是安全的關注?
謝謝比爾!如果我做了這樣的事情,你認爲它會使它安全嗎?$ method ='ajax_'。 $ method'.i.e。 'ajax_'前綴將確保他們不能訪問我的模型的任何其他方法? – alex 2009-09-15 01:03:28
我實際上更關心* do *調用ajax方法的惡意請求,而不是調用非ajax方法的請求。 – 2009-09-15 01:32:53
那麼這個模型只處理用戶搜索 - 它應該是安全的。 – alex 2009-09-15 01:34:17