PHP $ _Post变量打印但仍然给出索引错误?

时间:2010-09-14 00:14:35

标签: php variables post indexing undefined

嘿,我已经把$ _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>";
?>

...所有我得到的是一个未定义的索引:插槽等..等...错误,php文件的源只有空格。有趣的是,如果我只是这样做:

echo $_POST['slot'];

在页面顶部,它打印出上一页中的值就好了,但是,如果我查看源,它仍然显示未定义的索引错误而不是值。我知道值正在传递,因为它打印,但我不能将它用于其他任何东西,因为如果我尝试将它包含在我的PHP代码中,它只显示一个错误并给出一个空值!

我也尝试过使用$ HTTP_POST_VARS ['slots']并得到相同的结果......经过几个小时的实验后,我的智慧结束了......有什么建议吗?

4 个答案:

答案 0 :(得分:1)

检查空虚:

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

print "My foo is '$foo'";

答案 1 :(得分:0)

除了一些语法问题,我看不出有什么问题...好吧首先,你可以发布你的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>
<?

我不完全确定出了什么问题,但我认为问题出在您发布的代码中。它可能坐在其他地方,所以继续通过代码发送。

答案 2 :(得分:0)

修改

根据您的评论和发布的代码,当您应该回显$_POST['slot']时,您似乎正在尝试回复$_POST['slots'] ... 请注意最后的s < /强>


由于$_POST是一个超级全局,因此它可以在您网页的任何位置使用,因此您的代码应该有效。

我注意到您在帖子中混合了slotslots作为索引(您在最后一个示例中写了$HTTP_POST_VARS['slots']而在其他地方写了$_POST['slot'])。这可能是原因吗?

要检查$_POST的外观,请尝试将打印隐藏值的位置设置为正确(尽管它应该在页面的任何位置都相同):

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

另外,你的插槽没有用它周围的引号回显,所以它应该是:

<?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>";
?>

答案 3 :(得分:0)

尝试替换......

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

与..

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

祝你好运,希望有所帮助!