2010-01-26 24 views
1

處理的安全方式,我有一個提交大量輸入的形式......這些輸入

<input type="hidden" name="searchTag_happy" value="0" /> 
<input type="hidden" name="searchTag_sad" value="0" /> 
<input type="hidden" name="searchTag_ambivalent" value="0" /> 
etc 
. 
. 
. 

屬性的值可以是「0」或「1」。

我想使用此信息來創建一個數組「searchTags」,其中包含任何其值設置爲「1」的屬性。

我想知道什麼是最有效的,安全的方法來處理這個在PHP中。目前,我有一個像這樣的陳述很長的名單...

if ($_REQUEST['searchTag_happy']) $searchTagArray[] = "happy"; 
if ($_REQUEST['searchTag_sad']) $searchTagArray[] = "sad"; 
if ($_REQUEST['searchTag_ambivalent']) $searchTagArray[] = "ambivalent"; 
etc 
. 
. 
. 

但這似乎很詳細。有更好的選擇嗎?

在此先感謝您的幫助。

回答

0

Mck89是接近直角的關鍵只得到價值 - 以獲得所需的數組:

foreach($_REQUEST as $k=>$req) 
{ 
    if(strpos($k,"searchTag_")!==false && $req) 
    { 
     $searchTagArray[]=substr($k,10); 
    } 
} 

但考慮到該陣列的編號是不相關的,然後它,而意味着所產生的數據結構可以不被優化 - 更好的解決方案可能是:

 $searchTagArray[substr($k,10)]=1; 

或者只是使用array_filter()返回非零值而不轉換鍵。

C.

+0

感謝您的回覆。關於這一點:「但是考慮到數組的編號不相關,那麼它意味着結果數據結構可能不會被優化。」感謝您的高舉。我修改了代碼來編譯一個字符串而不是數組,如下所示:$ searchTags。= substr($ k,10)。「;」; – Travis 2010-01-26 12:50:51

2
foreach($_REQUEST as $k=>$req) 
{ 
    if(strpos($k,"searchTag_")!==false && $req) 
    { 
     $searchTagArray[]=$req; 
    } 
} 

這樣,你遍歷請求陣列,幷包含「searchTag_」,並與值= 1