codeigniter:如何处理错误网址中不需要的结果?

时间:2012-06-13 01:15:53

标签: php codeigniter

我是一名处理一个网站安全问题的新CI开发人员。

我有一个网址:

http://myweburl/Everything/gov/2

其中“2”表示查询db的参数。

这是我的问题: 如果有人按照网址导航:

http://myweburl/Everything/gov/2/order.txt

实际上网址中没有任何内容,但是......我会得到一个空的结果页面。(回复200 OK)

这不是我想要的。 我希望他会收到404错误或其他内容,告诉用户网址中没有任何内容。

有谁能请给我一些线索如何实现我的目标? 非常感谢!

1 个答案:

答案 0 :(得分:1)

基本上,您只想显示一个有效页面,如果它们是URL中代表查询中参数的正确数字URI段。

在调用任何其他方法之前,您应该检查URI segments的数量作为预处理。这样,您可以确定URL中实际上只有1个段

如果您发现URL中存在超过3个段,则使用CodeIgniter提供的便捷功能Error Handling.

来处理相应情况

您可以检查网址中正确的细分数量,如果不是您想要的细分数量,请调用show_404()方法。

在您发布的示例网址中: http://myweburl/Everything/gov/2/order.txt,实际上有4个细分。

    // from the docs http://codeigniter.com/user_guide/libraries/uri.html

     $total_segments = $this->uri->total_segments();

    // 3 segments would be the max if this is your url:
    // http://myweburl/Everything/gov/2/order.txt (this url contains 4 segments)
    //                 ^controller/function/uri_segment
    // this means that there are 3 segments in your URL
    // you don't want to have more than 3, so check for that
    // with the total_segments() function

     if($total_segments > 3)

     {
           $valid = false;
           show_404();

     }

     else 

     {

          $valid = true;

     }

     if($valid) 

     {

     // process data as usual

     }