2013-08-07 84 views
1

對於會議安排,我想要爲任何給定的房間設置動態頁面。用戶可以在config文件夾中編輯名爲「schedules.conf」的文件。目前,它看起來像這樣:Smarty從PHP中的.conf文件讀取配置值

[rooms] 
room = 5022 
room = 5082 

我能正常加載它,它體現在我的網頁2個鏈接:

{config_load file="schedules.conf" section="rooms"} 
...... 
...... 
...... 

{foreach from=#room# item=r} 

<li><span><span><a href="{$smarty.const.SITE_URL}/admin/schedules.list.php?room={$r}">Schedules {$r}</a></span></span></li>      

{/foreach} 

所以它鏈接到處理PHP文件,現在在PHP文件我要檢查的天氣房在配置文件中,因此,如果有人手動更改GET值房,在地址欄中我能有機會來處理:

if(!isset($_GET["room"])) 
    { 
     header('location: '.SITE_URL.'/admin/index.php'); 
    } 
    else 
    { 
     $validRooms = $smarty->getConfigDir(); 

     //How to check id the $_GET["room"] value exist in the config file  
    } 

回答

0

grep的此頁Conditional checks using smarty對isset()函數

編輯

在由OP光的註釋#1:

如何使用與in_array($_GET['room'], $validRooms)

+0

這我知道,但我想嚴格檢查在我的PHP文件,並在房間號碼不僅存在,那麼我從數據庫中提取數據。 –

0

檢查通過這種方式沿條件檢查:使用in_array()功能

$room = array(5022,5082); 
if (in_array($_GET['room'], $room)) { 
    // you can pull the data from database 
}else{ 
die('Wrong room data'); 
} 
+0

可能是一個soloution,但不是真的......我想結束使用只編輯配置文件。這樣我應該把這個$房間數組放在php文件中,並要求用戶稍後編輯。 –

+0

在這種情況下,您可以對房間數據進行編碼並通過url發送,並從url中獲取值,其中一個是正常值,另一個是編碼值,然後對其進行解碼並匹配,如果匹配,則拉數據,否則顯示錯誤消息。 – Sikander

+0

@Sikander檢查另一個同樣不受信任的用戶輸入變量將不會提供任何防止手動編輯URL的保護。必須在服務器上知道一些祕密,而配置文件目前是祕密。 – IMSoP

0

Luckly我從Smarty的論壇管理員回答:這裏是如何做到這一點:

不要在模板中加載配置文件,您可以將它加載到PHP腳本中。

Config load API

之後,你可以讀取配置瓦爾

Config vars