Php 有没有人手不够的人来做这个逻辑?

Php 有没有人手不够的人来做这个逻辑?,php,shortcut,Php,Shortcut,这是代码 if(!(isset($_POST["email"]) && isset($_POST["sessionKey"]) && isset($_POST["page"]) && isset($_POST["ipp"]))){ return; }else{ $email = htmlspecialchars($_POST["email"]); $sessionKey = htmls

这是代码

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"]);           
}  
好的,我的想法是我必须用相同的变量分配参数。例如,如果我发布一个参数“test”,我必须将其分配给一个变量。。。。测试。。。我做这样的事有捷径吗?多谢各位

$data=array_map('htmlspecialchars',$_POST); 
extract($data);
注意,这可能会覆盖具有相同名称的现有变量,但您可以通过向extract函数传递附加参数来更改此行为。

请查看:

另外,
isset
接受多个参数,因此您可以这样使用它:

if (isset($_POST["sessionKey"], $_POST["page"], $_POST["ipp"])) ...

请参阅:

以下是提取部分的另一种可能性:

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

要扩展
提取
答案,您可以仅将需要的$\u 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));
}

如果$\u POST包含一个数组怎么办?:-)@丹尼斯:那个案子没有列在问题中。如果是,将相应地更新我的答案。$\u POST不包含数组。(怎么可能?@awm
很明显,但是如果他在可能有数组的单独文件中使用您当前的代码,那么您当前的代码很容易发出警告(请参见上面的注释),并且极易被滥用(例如,使用您的
摘录($data)
,尝试发布is_logged_=1)。