2011-03-13 17 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 
} 
相關問題