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)。