Есть ли короткие руки для этой логики? - PullRequest
6 голосов
/ 14 мая 2011

Вот код ....

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», я должен присвоить его переменной .... test ... ... Есть ли какой-нибудь способ для меня сделать что-то подобное? Спасибо.

Ответы [ 4 ]

2 голосов
/ 14 мая 2011

Посмотрите на:

http://php.net/manual/en//function.extract.php

Кроме того, isset принимает более одного параметра, поэтому вы можете использовать его следующим образом:

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

См .: http://www.php.net/manual/en/function.isset.php

2 голосов
/ 14 мая 2011
$data=array_map('htmlspecialchars',$_POST); 
extract($data);

Будьте осторожны с extract , это может переопределить существующие переменные с тем же именем, но вы можете изменить это поведение, передав дополнительный параметр для извлечения функции.

1 голос
/ 14 мая 2011

Чтобы развернуть ответ 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));
}
1 голос
/ 14 мая 2011

Вот еще одна возможность для извлечения части:

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