我刚开始学习codeigniter,我必须说它很容易,但我在处理错误的url时遇到了问题,例如:
如果我有这样的锚标签http://example.com/info/2如果我有
public function info( $x ) {
$data['body'] = "Personal_info";
$data['details'] = $this->person_model->get_detail( $x );
$this->load->view('view', $data);
}
控制器抓取链接
segment (3)
然后从数据库中获取id的详细信息。现在,例如,如果用户手动编辑浏览器上的链接并更改
segment(3)
比方说7,并且在数据库中没有id为4。
我该如何处理这样的问题?我是一个初学者,所以请原谅我
您可以使用empty
方法来检查是否有数据,以及是否从页面重定向。
public function info( $x )
{
$details = $this->person_model->get_detail( $x );
if(empty($details))
redirect('other/url');
$data['body'] = "Personal_info";
$data['details'] = details;
$this->load->view('view', $data);
}
这样,它就不会抛出错误,并可能试图显示不存在的内容。
在尝试获取相关数据之前,您可以检查传递的id
是否存在于数据库中,例如:
$data_exists = $this->person_model->data_exists( $x );
if( $data_exists ) {
$data['details'] = $this->person_model->get_detail( $x );
$this->load->view('view', $data);
}
else {
//load some view for showing no such id exists in db
}
其中data_exists()
可以是模型中的函数,根据数据库中是否存在id
来返回TRUE
或FALSE
。