我是一名处理一个网站安全问题的新CI开发人员。
我有一个网址:
http://myweburl/Everything/gov/2
其中“2”表示查询db的参数。
这是我的问题: 如果有人按照网址导航:
http://myweburl/Everything/gov/2/order.txt
实际上网址中没有任何内容,但是......我会得到一个空的结果页面。(回复200 OK)
这不是我想要的。 我希望他会收到404错误或其他内容,告诉用户网址中没有任何内容。
有谁能请给我一些线索如何实现我的目标? 非常感谢!
答案 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
}