Как я получаю данные из формы и обрабатываю их (максимально упрощенный код ®ister_globalsff): PHP: if ($op == "passcheck") { PassCheck($op,$loginform,$passwordform); } else ShowPass(); function ShowPass() { print "<form action=\"index.php\" method=\"post\">\n"; print "<input width=10 type=\"text\" name=\"loginform\">"; print "<input width=10 type=\"password\" name=\"passwordform\">"; print "<input type=\"submit\" value=\"ok\">"; print "<input type=\"hidden\" name=\"op\" value=\"passcheck\"> print "</form>"; } function PassCheck($op,$loginform,$passwordform) { ... } Вообщем всё работает. Вопрос: можно ли сделать что бы данные из формы приходили массивом, т.е. функция была бы как то так: function PassCheck($ДАННЫЕ_из_ФОРМЫ) и не важно сколько там 2 переменные или 30?
Почитал немного манула, сделал так (покритикуйте, все ли практично реализовано): PHP: if ($_POST['form'][op]=="passcheck") {Show($_POST['form']);} else {ShowPass();} function Show($form) { ... } function ShowPass() { print "<form action=\"test.php\" method=\"post\">\n"; print "<input width=100 type=\"text\" name=\"form[loginform]\"><br>"; print "<input width=100 type=\"text\" name=\"form[passwordform]\"><br>"; print "<input type=\"hidden\" name=\"form[op]\" value=\"passcheck\">\n"; print "<input type=\"submit\" value=\"ok\" >"; print "</form>"; }
Скажите, а для чего делать проверку? У меня ведь ShowPass() запускается в любом случае, кроме если op=passcheck.
Потому что 'op' - текст, а op - константа. Это приводит к генерации ошибки типа Notice, что примерно в 7 раз замедляет операцию. И вобще это плохой стиль.
Можно. Например если поля будут иметь типа такие имена: HTML: <input name="date[name]"> <input name="date[password]"> то в массиве $_POST элемет date будет массивом с ключами name и date.