2010-09-14 72 views
0

嘿,我已经变成了一个非常令人沮丧的问题$ _Post变量。我将举例说明代码,而不是实际的细分来节省时间和困惑。在一个页面上我这样做:

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

的$ i是在一个while循环(我呼应这种简单的几次)的索引。表单本身提交了一个JavaScript。

这一切都很好,表单已正确提交并带我到另一页,我需要使用该“插槽”值来做其他垃圾。然而,当我尝试这样做:

<? 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']得到相同的结果......经过几个小时的实验后,我的智慧结束了......任何建议?

+0

“在页面顶部,它打印出前一页的值很好,但是,如果我查看源代码,它仍然显示”...我不认为我理解。这听起来像你说浏览器显示正确的数字,但源代码包含一个PHP错误消息,这是不太可能的。 – Hammerite 2010-09-14 00:24:31

+0

另一个无关的评论:使用短标签('<?')通常被警告;见this question。 – Hammerite 2010-09-14 00:26:37

+0

尝试在页面顶部放置'var_dump($ _ POST);'。这样你就可以看到'$ _POST'中的内容。也许这会给你一个关于这里发生了什么问题的暗示。 – Mischa 2010-09-14 00:30:35

回答

0

编辑:根据您的意见

,并张贴代码,您似乎在尝试的时候,你应该呼应$_POST['slots'] ...... 注意s呼应$_POST['slot']


由于$_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>"; 
?> 
+0

正如有序,即产率的print_r:阵列 ( [时隙] => 2 )哪个是即期。但是,如果我尝试在PHP代码中包含$ slots,它仍然是空白的... – user446882 2010-09-14 00:40:21

+0

@ user446882 - 好的,因此您的发布代码将无法工作。你有'$ _POST ['slot']'...尝试'$ _POST ['slots']' – 2010-09-14 00:43:35

+1

WOW。我是一个白痴。这绝对有效 - 但我也不得不雇用其他人的一些建议,最后这一切都在运行。谢谢,谢谢你,谢谢你,对你们这么友善和乐于助人的人们 - StackOverflow一直是我最喜欢寻求帮助的地方,并且这会重新强调这一点。再一次,我无法感谢你。 – user446882 2010-09-14 00:57:41

1

检查的空虚:

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

print "My foo is '$foo'"; 
+0

+1。 更简洁的版本: $ foo = empty($ _ POST ['foo'])?'default foo':$ _ POST ['foo']; – 2010-09-14 00:59:07

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

我不完全知道什么是错的,但我不认为这个问题是在你已经发布的代码。它可能在别处,因此不断通过代码发送。

+0

这里是javacript:function sub(i){“upgrades”+ i] .submit(); \t }它是由通过启动的onClick在另一股利... – user446882 2010-09-14 00:37:06

0

尝试更换...

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

...

​​

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