2017-02-19 2 views
2

Я читал о массивах, созданных $_POST в PHP. Я знаю, что если я отправлю форму с последующими входами ID, Name, Date, я в конечном итоге с массивом, который включает в себя $_POST = array('IDNo', 'Name', 'Date', 'State'). Точка, к которой я пытаюсь добраться, заключается в том, что я получаю одновременно несколько экземпляров IDNo, Name, Date, State.

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

<form method="post" action="test.php"> 
    <input type="hidden" name="IDNo" /> 
    <input type="text" name="Name" /> 
    <input type="text" name="Date" /> 
    <input type="radio" name="State1" /> 

    <input type="hidden" name="IDNo" /> 
    <input type="text" name="Name" /> 
    <input type="text" name="Date" /> 
    <input type="radio" name="State2" /> 

    <input type="hidden" name="IDNo" /> 
    <input type="text" name="Name" /> 
    <input type="text" name="Date" /> 
    <input type="radio" name="State3" /> 

    <input type="submit" value="Test Me" /> 
</form> 

Одна вещь, которую вы заметите, заключается в том, что вход радиосигнала имеет уникальное имя для каждой строки. Это связано с некоторыми jquery, реализованными на странице. Я видел IDNo[] и Name[] и т. Д., Так как это создало бы массив в массиве $ _POST, но мое уникальное имя входа на радио не сработало бы с этим, так как каждый радиовход был бы другим массивом

Был бы я лучше добавить IDNo или номер строки к каждому имени ввода, или есть другой способ, которым я могу справиться с этим, которого я просто не видел?

Возможно, изменив State1, чтобы state[1] и изменения IDNo, Name, Date к ID[1], Name[1], Date[1] в HTML.
Что для меня важно, так это то, что я делаю это правильно, не создавая ничего, что небезопасно.

+0

Я хотел бы использовать метод массива, чтобы иметь возможность петлю через ' $ _POST'data легко, но если радиовход не установлен, он не будет отображаться в данных, и ваш цикл будет неправильным. Использование чисел может быть лучше. Затем перейдите через '$ _POST' и проверьте существующие входы с помощью' array_keys' и 'strpos'. – AymDev

+0

Спасибо за ответ. Вы упомянули радиовходы, но есть некоторые входы, которые не будут иметь значений, которые я намереваюсь использовать как часть аргументов php. – denski

+0

пустой текст типа ввода будет пустым, но отправлен – AymDev

ответ

4

Существует много способов сделать это. Можно было бы быть:

<?php $states = array(1,2,3); ?> 
<form method="post" action="test.php"> 
    <?php foreach ($states as $state) : ?> 
     <input type="hidden" name="<?php echo 'state['.$state.']'; ?>[IDNo]" /> 
     <input type="hidden" name="<?php echo 'state['.$state.']'; ?>[Name]" /> 
     <input type="hidden" name="<?php echo 'state['.$state.']'; ?>[Date]" /> 
     <input type="hidden" name="<?php echo 'state['.$state.']'; ?>" /> 
    <?php endforeach; ?> 
    <input type="submit" value="Test Me" /> 
</form> 

Вы можете получить доступ к этим значения с помощью кода, как $_POST['state'][1]['Name']

Вы можете расширить $states массив для хранения дополнительной информации.

+0

Итак, по существу '$ _POST ['State'] [1] ['Name']' - это числовой массив, называемый state, с дополнительным массивом с именами. – denski

+0

У меня есть 2 вопроса, если вы не возражаете. 1. Могу ли я использовать '' и т. Д., Безопасно, как только я правильно обработаю вход? 2. Существуют ли какие-либо проблемы безопасности, связанные с использованием фактического уникального идентификационного номера из MySQL в качестве номера «State». – denski

+0

№. Уровень вашей безопасности не зависит от номеров идентификационных номеров. Что вы делаете с информацией перед отправкой в ​​базу данных. – RST

0

Это хороший вопрос ~

Я думаю, что он может использовать только другое имя атрибут для радио при использовании формы для отправки HTTP пакетов ~

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