Данные POST не возвращаются при наличии скрытого типа ввода - PullRequest
5 голосов
/ 13 июля 2010

Я думаю, что в моем коде либо ошибка, либо неправильно настроен мой PHP или Apache.

Когда я отправляю форму со скрытым полем в ней, я не получаю никаких данных вмой массив $ _POST ...

Когда я закомментирую скрытое поле в моем коде, данные POST возвращаются корректно ...

ФОРМА HTML

<form action='/utils/login.php ' method='POST'>
<table>
    <tr>
        <td colspan='2'>
            Login
        </td>
    </tr>
    <tr>
        <td>
            Username
        </td>
        <td>
            <input type='text' name='userid' value='' size='12' />
        </td>
    </tr>
    <tr>
        <td>
            Password
        </td>
        <td>
            <input type='password' name='password' size='12' />
        </td>
    </tr>
    <tr>
        <td>
            <input type='hidden' name='formtype' value='login' />
        </td>
    </tr>
    <tr>
        <td>
            <input type='submit' value='Submit' />
        </td>
    </tr>
</table></form>

Вот код, который обрабатывает его в PHP ...

foreach ($_POST as $var => $value) {
     echo "$var = $value<br>";
} 

Я использую PHP 5 и Apache 2.2 на своем сервере.

Есть идеи?

РЕДАКТИРОВАТЬ...

Я сузил это до этого ...

$command = $_POST['formtype'];

Когда я удалил знак @ из моего $ _POST, я получаю следующую ошибку ...

Примечание: неопределенная переменная: formtype в C: \ webroot \ utils \ login.php в строке 17

Если я закомментирую эту строку, данные POST без проблем будут переданы в программу.

Ответы [ 5 ]

2 голосов
/ 13 июля 2010

Вы никогда не закрывали свой тег <form>.

И теперь я вижу, что кто-то опередил меня в этом на милю в комментариях.Тем не менее, это правильный ответ.

2 голосов
/ 04 августа 2011

Вы пытались убрать скрытый ввод из таблицы и поместить его сразу после открывающего тега формы?

Вы также можете использовать:

var_dump($_POST);

... для просмотра переменных сообщения.

Кроме того, если какие-либо входы создаются динамически или могут отсутствовать в переменных POST ... вы можете использовать:

variable = 'default';
if(isset($_Post['variable'])) $variable = $_POST['variable'];

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

2 голосов
/ 13 июля 2010

Я бы предложил изменить код, который вы используете для отображения содержимого $_POST, на один вызов:

print_r($_POST);

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

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

1 голос
/ 03 мая 2016

Я изменил свою форму, чтобы работать с Twig.Измененная форма не отправляла скрытое значение ввода с сообщением.Если у кого-то возникла такая же проблема, я решил ее следующим образом:

Исходная строка была:

<input hidden name='foo[{{ loop.index }}][id]' value='{{id}}' />

Я продал ее, сделав type = 'hidden':

<input type='hidden' name='foo[{{ loop.index }}][id]' value='{{id}}' />
0 голосов
/ 14 октября 2014

Пожалуйста, попробуйте с:

<form action="..." method="post" enctype="application/x-www-form-urlencoded">
...