我正在为我的控制器写一个“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