2011-05-02 29 views
2

我試圖儘可能保持我的代碼安全/乾淨。如果我有用於檢查用戶是否登錄的If/Else語句(如果沒有,則用戶重定向回主頁),這兩種方法中的任何一種都可以工作?重定向If/Else聲明vs僅If If

if (!$this->auth->is_logged_in()) { 
    redirect(''); 
} else { 
    // do something top secret 
} 

if (!$this->auth->is_logged_in()) redirect(''); 
// do some top secret stuff 

我寧願第二個方法,但我不確定是否是安全的。

編輯
這些將在笨控制器

另一個編輯
可以使用在笨的redirect()函數包括在下面的答案討論的exit;

+0

如果您要爲已登錄的用戶執行一些邏輯,您不需要'else'嗎? – Blender 2011-05-02 18:09:57

+0

@Blender:如果用戶沒有登錄,他們將被重定向,因此之後的代碼將不會運行。 – 2011-05-02 18:11:24

+0

@Blender如果用戶登錄了,這兩個功能的作用都是一樣的 – Booski 2011-05-02 18:12:31

回答

9

這裏沒有安全問題。

我將消除其他可能的話:

if (!$this->auth->is_logged_in()) { 
    redirect(''); 
} 
// top secret stuff 

我認爲這是最可讀的。

而且,我敢肯定它,但要確保重定向功能,包括對exit

+0

很酷,謝謝Galen。嗯....什麼是電話編輯? :) – Booski 2011-05-02 18:11:28

+0

@mtokoly:'退出;'它停止運行腳本。 – 2011-05-02 18:12:04

+1

重定向後,您應該調用'exit;'。它結束腳本的處理。它看起來像你使用Code Igniter,並確保CI包括退出; – Galen 2011-05-02 18:13:41

1

無論是精緻的電話,但括號通常優選如果你想在以後添加的功能。我也會創建一個身份驗證方法,如gatekeeper(),force_login(),無論是否檢查內部重定向,因爲您可能會使用它很多,如果在任何地方檢查語句,都會很煩人。