Лучший способ сопоставления параметров _POST с переменными

#php #post #dry #url-parameters

#php #Публикация #сухой #url-параметры

Вопрос:

Я уверен, что есть лучший способ сопоставления всех параметров _POST с переменными с тем же именем. Кто-нибудь знает, как сделать это лучше?

 $ownerName = $_POST["ownerName"];
$ownerEmail = $_POST["ownerEmail"];
$ownerPhone = $_POST["ownerPhone"];
$ownerAddress = $_POST["ownerAddress"];
$buyerName = $_POST["buyerName"];
$buyerEmail = $_POST["buyerEmail"];
$buyerPhone = $_POST["buyerPhone"];
$buyerAddress = $_POST["buyerAddress"];
$propertyAddress = $_POST["propertyAddress"];
$parcelNumber = $_POST["parcelNumber"];
  

Большое спасибо.

Ответ №1:

В PHP есть функция для извлечения значений в переменные:

 <?php
extract($_POST, EXTR_SKIP);
?>
  

Комментарии:

1. Вау, сегодня я узнал кое-что новое. Любопытно, насколько это безопасно на самом деле? Например, если у меня есть логическое значение ‘$authorized’ и кто-то публикует с authorized=true ним, перезапишет ли оно это значение.

2. Вау! Большое спасибо за идеальный ответ и за помощь n00b. = D

3. @Amir со вторым параметром вы можете избежать этого .. тот, который я поставил «EXTR_SKIP», будет делать именно это .. если var уже существует, не переопределяйте.

4. Амир, для этого и нужен EXTR_SKIP, если переменная уже существует, она не будет перезаписывать ее.

5. Это очень классная функция, но на странице написано ПРЕДУПРЕЖДЕНИЕ — Не используйте extract() для ненадежных данных, таких как пользовательский ввод (например, $ _GET, $ _FILES И т. Д.). Если вы это сделаете, например, если вы хотите временно запустить старый код, который полагается на register_globals, убедитесь, что вы используете одно из непереписываемых значений extract_type, таких как EXTR_SKIP, и помните, что вы должны извлекать в том же порядке, который определен в variables_order в php.ini.

Ответ №2:

Вы можете использовать foreach таким образом (в отличие от extract того, как вы можете манипулировать / проверять имя переменной или значения

 <?php
foreach($_POST as $key => $value) 
   $$key = $value;
?>
  

Ответ №3:

Если вы используете php> 5, я бы рекомендовал взглянуть на это:

http://www.php.net/manual/en/function .filter-input-array.php

Функции ввода фильтра позволяют вам легко применять некоторую проверку и очистку, которые вам, вероятно, понадобятся.