2011-05-14 60 views
6

下面是代碼....做這個邏輯有沒有短手?

if(!(isset($_POST["email"]) && isset($_POST["sessionKey"]) && isset($_POST["page"]) && isset($_POST["ipp"]))){ 
     return; 
}else{ 
    $email  = htmlspecialchars($_POST["email"]);   
    $sessionKey = htmlspecialchars($_POST["sessionKey"]);   
    $page  = htmlspecialchars($_POST["page"]);   
    $ipp   = htmlspecialchars($_POST["ipp"]);   
} 

OK,這個想法是我必須用相同的變量分配參數。例如,如果我發佈了一個參數「test」,我必須將它分配給一個變量.... test ... ...有沒有對我做這種事情的捷徑?謝謝。

回答

2
$data=array_map('htmlspecialchars',$_POST); 
extract($data); 

小心extract這可以用相同的名稱替換現有變量,但你可以通過額外的參數提取功能更改此行爲。

+0

如果$ _POST包含數組是什麼? :-) – 2011-05-14 11:05:28

+2

@Denis:該案件沒有列出問題。如果是這樣,將相應地更新我的答案 – 2011-05-14 11:07:36

+0

$ _POST不包含數組。 (怎麼可能?) – awm 2011-05-14 11:07:37

1

這裏的提取部分的另一種可能性:

foreach (array('email','sessionKey','page','ipp') as $v) { 
    $$v = htmlspecialchars($_POST[$v]); 
} 
1

要於extract答案擴展,你可以切出只是你需要使用$ _ POST條目:

$vars = array_intersect_key($_POST, 
    array_flip(array("email", "sessionKey", "page", "ipp"))); 

// and then this replaces the isset() check and the extraction 
if (count($vars) == 4) { 
    extract(array_map("htmlspecialchars", $vars)); 
}