如何阻止人们访问Codeigniter中的特定URL

时间:2011-03-13 20:47:52

标签: php codeigniter

说我有网址/product/view/1,这意味着我的产品控制器类中有方法:

function view($id)
{
    // Do something here
}

如果有人去/product/view

,如何让它失败呢?

目前我收到两条错误消息,其中一条说Missing argument 1 for Budget::view(),另一条说Undefined variable: id这两条消息都是我期望的,但显然我宁愿提供自己的消息。

4 个答案:

答案 0 :(得分:4)

两种方式,

选项一:通过说

$id变量提供默认值
function view($id = '')
{
     // Do something here and test if it's empty
}

这是传统上用PHP中的函数的可选参数完成的

选项二:您可以使用URI帮助程序(默认情况下自动加载),而不是将URI段作为参数传递给函数。

function view()
{
     $id = (int) $this->uri->segment(3);
     // Do something here
}

然后你可以测试是否设置了id并从那里开始

答案 1 :(得分:2)

如果您的控制器是产品,并且方法是视图

...
function view ( $id = null ) {
  // set graciously failing if $id = null to avoid error 
  // and make happend what you want
  ....
}
...

答案 2 :(得分:1)

不了解任何CodeIgniter细节,但您始终可以使用.htaccessmod_rewrite重定向

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/product/view$
RewriteRule ^(.*)$ http://www.example.com/your-error-document [R=301,NC,L]

答案 3 :(得分:1)

function view($id = false)
{
    if ($id===false) {
        //show error
        show_error('your error');
        //or redirect
    }
    // Do something here
}