2011-03-13 16 views
0

说我有网址/product/view/1这意味着我有方法,我的产品控制器类:如何停止的人去特定的URL在笨

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

如何获得,如果有人去把它优雅地失败/product/view

目前我收到两条错误消息,一条说​​,另一条说我想要的两条,但显然我更愿意提供我自己的一条。

回答

2

重定向如果您的控制器的产品,方法是查看

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

省长。谢谢。忘记了默认参数。 – 2011-03-13 21:07:46

1

不知道任何细节笨,但你总是可以用.htaccessmod_rewrite

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

很好的回答,b做ut我正在寻找一些基于代码的东西,所以我不需要每次需要做类似的事情时都管理服务器端的东西。不过谢谢。 – 2011-03-13 21:07:27

+1

够公平的。一个好处是,用户在点击整个PHP处理之前会被重定向。(并且因此服务器上的负载较少) – konsolenfreddy 2011-03-13 21:45:06

+0

这实际上是一个非常好的观点。但是,不会有任何指向/ products/view页面的链接,因此只有在您想要混淆URL时才可以访问它们。话虽如此,当它发生时可能值得记录,如果发生了很多事情,我将开始使用.htaccess文件。 – 2011-03-14 09:48:46

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
function view($id = false) 
{ 
    if ($id===false) { 
     //show error 
     show_error('your error'); 
     //or redirect 
    } 
    // Do something here 
} 
相关问题