2009-06-14 2 views
1

Эй, я программирую форму обратной связи на веб-сайте для клиента, однако есть более 100 входов (все однозначно названы). Мне было интересно, если там был цикл я мог бы работать, чтобы получить все переменные, вы должны называть их так:Есть ли функция PHP для вызова всех переменных из формы?

$variable = $_REQUEST['variable']; 

EDIT:

Я собираюсь с $ _POST в соответствии с рекомендациями все здесь - спасибо за вход! Я просто вручную просмотрю и напишу строку для каждого $ _POST, который у меня есть.

+1

Не используйте ЗАЯВКУ, используйте POST, если они размещены, и GET, если они из URL. Шутки в сторону. Вы никогда не должны использовать REQUEST. –

+1

Что конкретно вы делаете для этого? Почему у одной формы есть 100 уникальных входов? Там может быть лучшее решение. Я, как правило, всегда обрабатываю поля формы отдельно, потому что для каждого поля требуются разные проверки работоспособности, но я не знаю, чего вы пытаетесь достичь. –

ответ

3

Вы можете перебираем все veriables в $ _PREQUEST массива:

foreach($_REQUEST as $key=>$value){ 
    //doStuff 
} 

Однако это будет включать в себя все отправьте параметры не только на вход. Кроме того, вы не должны использовать $ _REQUEST, но $ _POST или $ _GET

0

Переменные массива $_GET и $_POST содержат каждый параметр, передаваемый через URL или метод POST соответственно. Вы должны использовать эти переменные вместо того, чтобы извлекать каждый элемент, например register_globals option или extract function. См. Using Register Globals по причинам.

+0

Возможно, вы захотите уточнить, что глобальные регистры * NEVER * - хорошая идея. По любой причине. Люди, которые думают, что это хорошая идея, в конечном итоге создают дыры в безопасности под видом веб-сайта. –

0

Как и в моем комментарии выше, не используйте REQUEST, используйте POST. Я бы, наверное, написал строку для каждого, чтобы я знал, что происходит. Вы не хотите, чтобы люди отправляли дополнительные переменные, которые все еще анализируются.

0

Вы можете написать простой код, чтобы алгоритмически получить все входы из опубликованной формы, но это опасный бизнес, созревший для эксплуатации.

1
echo "<pre>"; 
print_r($_POST); // or $_GET 
echo "</pre>"; 

Если вы имеете дело с предметами, которые вы, возможно, не будет знать имя, но нуждаются значения, то вы имеете дело с гораздо большей проблемой, чем вы думаете.

Но выше фрагмент кода должен показать вам все переменные, установленные и их значения при отправке формы

+0

Полезно знать для OP, но не поможет вам на самом деле ничего с ними делать. –

3

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

<form> 
    <input name="foo[a]" type="text" /> 
    <input name="foo[b]" type="text" /> 
    <input name="bar[]" type="text" /> 
    <input name="bar[]" type="text" /> 

стороне клиента:

<?php 
    $_POST['foo']['a']; 
    $_POST['foo']['b']; 
    $_POST['bar'][0]; 
    $_POST['bar'][1]; 
?> 
1

Я думаю, вы должны начать со списком всех переменных, которые вы ожидаете, и петля только над теми. Если вы этого не сделаете, хакеры могут ввести любое имя переменной ... На самом деле вы перевыполняете старую, ужасно плохую идею Register Globals. Итак, не делайте этого ...

На самом деле, почему бы не сохранить ввод в ассоциативном массиве, как $ _POST? Вы все равно можете удалить те значения, которых вы не ожидали.

0

Я не могу добавить комментарий к сообщению Пима Jager, но вот пример кода:

foreach($_POST as $key=>$value) { 
    echo($key.' > '.$value.'<br />'); 
} 
0

Используйте массив с полями, которые вы хотите, скопированных из POST и сохранить данные в массиве. Это намного проще в обслуживании.

$fields = array("name","email","addr","bla","bla2"); 
$form = array(); 
foreach($fields as $field){ 
    $form[$field] = $_POST[$field]; 
} 

Теперь у вас есть все данные внутри $form.
Вы также можете сделать аналогичную вещь при создании формы. (Хотя это сложнее ..)

Приветствия!

0
foreach($_POST as $key=>$value) { 
      ${$key} = $value; 
    } 

но это делает то же самое, как экстракт()

Смежные вопросы