2012-04-18 36 views
0

我正在與我的應用程序的安全級別,我寫了一個函數,只是檢查 - 取決於它的會話用戶ID他/她有什麼樣的特權。它工作正常,但在一些頁面中,如果用戶是超級用戶,我想輸出一些信息,並且禁止在用戶是訪客時輸出信息。PHP腳本中特定行的PHP別名?

我這樣的語法做到這一點:

1. <? if admin('superuser', $_SESSION['user_id']) { ?> 
2. <div></div> 
3. <? } ?> 

它的工作原理很好,但它不是優雅,冰壺括號情況下長碼它與我的代碼純度messess。 有沒有辦法來「別名」行1和3某種捷徑,即

1. <? admin_superuser ?> 
2. <div></div> 
3. <? admin_super_user_end ?> 

也許你有一些其他的想法來執行這樣的級別的安全性?

這個想法來自ob_start()和ob_end()命令。 我在等待你的想法。

Kalreg。

+1

我認爲你的頭痛可以通過不把你的html與你的php內聯在一起來解決。模板引擎已經解決了這些問題。保持你的邏輯在PHP和你的HTML模板。 – Aknosis 2012-04-18 20:26:46

+0

您可以將PHP看作模板引擎。 – 2012-04-18 20:27:24

回答

4

你可以簡單地在頁面的開頭設置一個布爾值:

$isSuperUser = admin('superuser', $_SESSION['user_id']); 

然後,只是做

<? if ($isSuperUser) { ?> 
<div></div> 
<? } ?> 

如果你不喜歡$,你可以定義常數:

define("SUPERUSER", admin('superuser', $_SESSION['user_id'])); 

然後,只要做

<? if (SUPERUSER) { ?> 
<div></div> 
<? } ?> 

大約恆定的好處是,它是全球性的,而如果使用一個功能,您就不必聲明它的全球第一,或將其作爲參數傳遞。

+0

似乎一開始就很實用,但它在更大的項目中表現出不受控制的增長。保持可控性;總是知道你在哪裏可以得到什麼東西,而不僅僅是一些其他超級全球性東西,它們遍佈各處。我的2美分... – 2012-04-18 20:44:03

+0

我喜歡它解決方案best +1 from:>,thx – Kalreg 2012-04-18 20:47:22

3

我會去這樣的事情。我認爲這完全可以接受。
爲了簡化它,你只需要爲你的用戶包裝。

<?php if ($user->isAdmin()): ?> 
<div></div> 
<?php endif; ?> 
+0

如果作者對OOP感到滿意,封裝將是最佳選擇imo – crush 2012-04-18 20:28:30

2

你可以包含另一個PHP文件,其中包含相應的HTML/PHP代碼與「包含」功能。我還建議使用<?php而不是僅使用<?,因爲xml和ini設置中存在簡短的開放標記問題。