因此,目前,我的CI网站被格式化以接收URI的一部分,让我们说一个ID,并从数据库中查找结果以显示在页面上。由URI确定的数据
如果我输入的数据库不在数据库中,但是自然会出现数据库错误。有没有更好的方法来保护我的URI不受直接数据库访问的影响,并且,告诉用户他们输入的URL无效的最佳方法是什么?
因此,目前,我的CI网站被格式化以接收URI的一部分,让我们说一个ID,并从数据库中查找结果以显示在页面上。由URI确定的数据
如果我输入的数据库不在数据库中,但是自然会出现数据库错误。有没有更好的方法来保护我的URI不受直接数据库访问的影响,并且,告诉用户他们输入的URL无效的最佳方法是什么?
IMO你不应该只显示一个错误,但也抛出一个404(或301,取决于你的应用程序)为SEO原因
一个简单的实现:
MY_Controller。 PHP
...
protected function error404()
{
set_status_header(404);
$data = array();
$this->load->view('error404_view', $data);
}
examplecontro ller.php
...
$data = $this->Some_model->get_by_id($id);
if (empty($data))
{
$this->error404();
}
else
{
// your view here
}
...
假设你的id存储在$ id中。然后你可以做这样的事情。
if() // if $id not found - depends how you are doing check
{
$errorMsg = "Not found";
$this->session->set_flashdata('errorMsg', $errorMsg);
redirect('home'); //Redirect to the page which is always available and display flashdata with error message here
}
是的,我基本上在模型中创建了一个函数来检查页面的ID。我将数据库名称传递给该函数,以便它知道在哪里查找,然后重定向到404错误页面。多谢你们! – Sneaksta 2012-03-23 03:09:37