Как принять неустановленное количество переменных?

Кляйссер

Новичок
Как принять неустановленное количество переменных?

Здравствуйте. Может подскажете в моем вопросе. Проблема следующая.
Есть передающая страница с всегда разным множеством полей. Например, текстовых полей, в которые пользователь вводит информацию для последующей передачи скрипту может быть сколько угодно. Может десять, а может и сто.
Как в принимающем скрипте сделать так, чтобы обрабатывалось все это множество переменных?
 

jonjonson

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

Кляйссер

Новичок
jonjonson
А как обозначить именно $_POST массив? Как это синтаксически делается? Нигде найти не могу.
Если я ведь буду делать так, что переменные будут называться, например pole_1, pole_2 и т.д., а в скрипте обрабатывать типа

$x=1;
while(@$_POST['pole_'.$x]!=false){
...
$x++;
}

ничего не получится. Если какое-то поле будет пропущено (будет отсутствовать в отправляющем) за pole_5, например , сразу будет идти pole_7.
Тогда по моему циклу все, что после pole_5 не обработается.

-~{}~ 08.09.07 06:05:

Где это почитать можно?
 

Кляйссер

Новичок
Армян
Спасибо. Но это я знаю. Я хотел узнать как именно передается $_POST массив?
Ну грубо говоря, в исходном документе все поля называются одним именем, например pole, а в принимающем скрипте какое-то значение из $_POST массива будет $_POST['pole'][3]
???

-~{}~ 08.09.07 06:23:

Я и пример там нашел.

<?php
foreach ($_POST as $key => $value) {
...
}
?>

Но как его передать этот массив правильно? Все полля назвать одним именем?
 

jonjonson

Охренеть
Играйся :)
PHP:
<?php
class FieldsFucker
{
    var $fields = array(
            "field1" => "method1",
            "field2" => "method2",
            "field3" => "method3",
        );

    function process() {
        foreach($_POST as $key => $value) {
            if (array_key_exists($key, $this->fields)) {
                $method = $this->fields[$key];
                $this->$method($value);
            }
        }    
    }

    function method1($value) {
        if (is_array($value)) {
            foreach($value as $item) {
                echo "Yes! {$item}<br />";
            }
        } else {
            echo "Yes! {$value}<br />";
        }
    }

    function method2($value) {
        if (is_array($value)) {
            foreach($value as $item) {
                echo "Ohhh. Yes! {$item}<br />";
            }
        } else {
            echo "Ohhh. Yes! {$value}<br />";
        }
    }
    
    function method3($value) {
        if (is_array($value)) {
            foreach($value as $item) {
                echo "No! Keep on! {$item}<br />";
            }
        } else {
            echo "No! Keep on! {$value}<br />";
        }
    }
}

if (isset($_POST["action"]) && "Yes" == $_POST["action"]) {
    $item =& new FieldsFucker();
    $item->process();
}
?><form action="" method="post">
<input type="hidden" name="action" value="Yes" />
<input type="text" name="field1[]" /><br />
<input type="text" name="field1[]" /><br />
<input type="text" name="field3" /><br />
<input type="submit" value="Fuck 1" />
</form>
<hr />
<form action="" method="post">
<input type="hidden" name="action" value="Yes" />
<input type="text" name="field1" /><br />
<input type="text" name="field2" /><br />
<input type="text" name="field3" /><br />
<input type="submit" value="Fuck 2" />
</form>
<hr />
<form action="" method="post">
<input type="hidden" name="action" value="Yes" />
<input type="text" name="field1[]" /><br />
<input type="text" name="field2[]" /><br />
<input type="text" name="field3[]" /><br />
<input type="text" name="field1[]" /><br />
<input type="text" name="field2[]" /><br />
<input type="text" name="field3[]" /><br />
<input type="text" name="field1[]" /><br />
<input type="text" name="field2[]" /><br />
<input type="text" name="field3[]" /><br />
<input type="submit" value="Fuck 3" />
</form>
 

Кляйссер

Новичок
jonjonson
Спасибо большое!

Но зачем такой большой текст с обилием слова Fuck?
С меня достаточно и просто
<input type="text" name="field1[]" />
 

jonjonson

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

Кстати, слов Fuck не так уж и много. Гораздо больше слова Yes :)
 
Сверху