2012-04-09 316 views
0

我將表單元素保存到文件中,並且以下按預期工作。檢查表單元素是否存在

$t_str .= "viewMandatory=".$_GET['viewMandatory'] ."\n"; 

但我需要的是,如果$ _GET設置,那麼它應該被附加到「t_str」字符串。

如果未從窗體收到viewMandatory值,則不應該打印任何內容。如何將此檢查添加到上述語句中?

+0

有[大量](http://stackoverflow.com/questions/3496971/check-if-post-exists)相似的](http://stackoverflow.com/questions/3432282/check-if-any-variables-are-passed-in-a-get)的問題,和[谷歌搜索非常成果](http:// www。 google.co.uk/webhp?#hl=en&output=search&sclient=psy-.ab&q=check+if+get+variable+exists&fp=1)。 – Alex 2012-04-09 07:16:56

回答

5
if (!empty($_GET['viewMandatory'])){ 
$t_str .= "viewMandatory=".$_GET['viewMandatory'] ."\n"; 
} 

在292個問題後,您應該遇到empty()函數。

+0

我想你缺少一個附加的'()'條件 – Joseph 2012-04-09 07:12:37

+0

謝謝@Joseph,傻我 – 2012-04-09 07:14:02

1
$t_str .= (!empty($_GET['viewMandatory'])?$_GET['viewMandatory']:null; 

這種方式,你有更少的代碼,是什麼使得它更易於閱讀(至少對我來說,我喜歡短的形式),但代碼將每次您請求的頁面執行。 Dragon的解決方案並非如此。

但是想想代碼注入。過濾$ _GET ['viewMandatory']之前,將其添加到您的字符串!否則,惡意代碼可以被注入很簡單,例如:

www.yourpage.com/page.php?viewMandatory=';BAD_CODE_HERE (or " instead of ') 
1
Use php isset  


if (isset($_GET['viewMandatory'])){ 
$t_str .= "viewMandatory=".$_GET['viewMandatory'] ."\n"; 
}