我刚刚开始学习codeigniter,我必须说它非常容易,但我在处理错误的网址时遇到问题,例如:
如果我有这样的锚标签 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。
我该如何处理这样的问题?我是初学者所以请原谅我
答案 0 :(得分:2)
您可以使用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);
}
这样它就不会抛出错误,并可能会尝试显示不存在的东西。
答案 1 :(得分:1)
在尝试获取相关数据之前,您可以检查传递的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()
可以是模型中的函数,该函数返回TRUE
或FALSE
,具体取决于数据库中id
的存在。