Переменные PHP $ _Post печатают, но все равно выдают ошибки индекса? - PullRequest
0 голосов
/ 14 сентября 2010

Эй, у меня есть проблема, которая стала чрезвычайно неприятной с переменными $ _Post.Я приведу примеры кода, а не фактические сегменты, чтобы сэкономить время и путаницу.На одной странице я делаю это:

<? echo "<form name='form' action='page.php' method='post'>
         <input type='hidden' name='slot' value=".$i.">
         </form>";
?>

$ i - это индекс в цикле while (я повторяю эту простую форму несколько раз).Сама форма представлена ​​с небольшим количеством javascript.

На этом этапе все в порядке, форма отправляется правильно и переносит меня на другую страницу, где мне нужно использовать это значение "slot" для выполнения какого-либо другого барахла.Однако, когда я пытаюсь сделать это:

<? echo "<form name='another_form' action='another_page.php' method='post'>
         <input type='hidden' name='slot_num' value=".$_POST['slot'].">
         //SOME OTHER HIDDEN VARS
         </form>";
?>

или это ...

<? echo "<form name='another_form' action='another_page.php' method='post'>
         <input type='hidden' name='slot_num' value=";
         echo $_POST['slot'];
          echo ">
         //SOME OTHER HIDDEN VARS
         </form>";
?>

или это ...

<? //TOP OF PAGE
$slots = $_POST['slot'];
?>

<? //FURTHER DOWN
<? echo "<form name='another_form' action='another_page.php' method='post'>
     <input type='hidden' name='slot_num' value=".$slots.">
     //SOME OTHER HIDDEN VARS
     </form>";
?>

... всеЯ получаю Undefined index: slot etc .. etc ... error, а в источнике документа php просто пустое место.Забавно то, что если я просто сделаю это:

echo $_POST['slot'];

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

Я также пытался использовать $ HTTP_POST_VARS ['slots'] с тем же результатом ... Я в тупике после нескольких часов экспериментов ... какой-нибудь совет?

Ответы [ 4 ]

1 голос
/ 14 сентября 2010

проверка на пустоту:

if(empty($_POST['foo'])) {
  $foo = "default foo";
} else {
  $foo = $_POST['foo'];
}

print "My foo is '$foo'";
0 голосов
/ 14 сентября 2010

Попробуйте заменить ...

<? //TOP OF PAGE
$slots = $_POST['slot'];
?>

на ..

<?php //TOP OF PAGE
isset($_POST['slot']) : $slots = $_POST['slot'] ? $slots = '';
?>

Удачи, надеюсь, что это поможет!

0 голосов
/ 14 сентября 2010

Редактировать:

Судя по вашим комментариям и опубликованному коду, вы пытаетесь повторить $_POST['slot'], когда вы должны повторить $_POST['slots'] ... примечаниеs в конце .


Поскольку $_POST является суперглобальным, он доступен в любом месте на вашей странице, поэтому ваш код должен работать.

Iзаметил, что вы смешали slot и slots в качестве индекса в своем посте (вы написали $HTTP_POST_VARS['slots'] в качестве последнего примера и $_POST['slot'] везде).Может ли это быть причиной?

Чтобы проверить, как выглядит $_POST, попробуйте прямо здесь, где вы хотите напечатать скрытое значение (хотя оно должно работать одинаково в любом месте на вашей странице):

<code><?php
echo "<pre>";
print_r($_POST);
echo "
";?>

Кроме того, ваш слот не отображается в кавычках, поэтому он должен быть:

<?php echo "<form name='another_form' action='another_page.php' method='post'>
         <input type='hidden' name='slot_num' value='".$_POST['slots']."'>
         //SOME OTHER HIDDEN VARS
         </form>";
?>
0 голосов
/ 14 сентября 2010

Ну, я не вижу ничего плохого, кроме нескольких проблем с синтаксисом ... Хорошо, так, во-первых, вы можете опубликовать мне свой javascript, чтобы я мог видеть это.

Теперь вместо того, что вы делаете с этим, попробуйте этот код:

?> <form name="another_form" action="another_page.php" method="post">
         <input type="hidden" name="slot_num" value="<?php echo isset($_REQUEST['slot'])?$_REQUEST['slot']:'not found'; ?>">
         </form>
<?

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

...