|
发表于 2009-4-7 21:37:30
|
显示全部楼层
本帖最后由 BillyFan 于 2009-4-7 21:53 编辑
说起来是很容易,你有没有想过一个project每个method的segment验证是千变万化的?
“一条小小的验证”在一个project里面会变成“几十几百条小小的验证”
就拿我正在写的交友系统,粗略算一下带缓存的method少说也近百了,
如果给每个method增加小小的验证,那程序将耦合到囧rz的地步,
个人认为,就因为每个method里需要的验证都是不同的,因此framework本身是不可能提供一个万能的验证功能的。
同时,作为程序员,有义务和责任对自己写的程序进行安全验证,
举例来说,如果我在noticeboard这个controller里有如下一个method,
PHP复制代码
function readpost ($pid){
$query = $this->db->get_where('posts',array('post_id' => $pid));
$rowPost = $query->row();
$data['content'] = $rowPost->title;
$this->output->cache(10);
$this->load->view('readpost',$data);
}
复制代码
那么我想我有必要在这个method里增加一个验证,如果请求的$pid不存在的,应该给用户返回一个错误信息,于是乎,我就可以把method修改成下面这个样子:
PHP复制代码
function readpost ($pid){
$query = $this->db->get_where('posts',array('post_id' => $pid));
if($query->num_rows() == 1)
$rowPost = $query->row();
$data['content'] = $rowPost->title;
$this->output->cache(10);
$this->load->view('readpost',$data);
}
else{
// go to 404;
}
}
复制代码
这样,假设我的数据表post里只有id=1和id=2两条记录,
那么当用户请求:http://testdomain.com/noticeboard/readpost/3
的时候,就会返回404,而不生成缓存 |
|