无法从$ _POST设置变量

时间:2011-10-15 07:17:51

标签: php variables post global-variables

我无法从post数组中设置变量。

我有一个带有隐藏字段的简单表单:     <input name="sid" type="hidden" id="sid" value="<?=$sid?>">

这个隐藏字段被发送到第二个文件(exec.php),其中我有以下代码:

$sid = $_POST['sid'];

出于某种原因,在尝试设置$ sid时,它会获得NULL值。哈哈,我跑了以下:

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

这为sid提供了正确的1938值。我已经看了3个小时,但找不到正在发生的事情。我期待一些非常愚蠢的东西...任何想法?


这是enter.php

上的表格
    <form name="form1" method="post" action="exec.php">
     <input name="sid" type="hidden" id="sid" value="<? echo($sid); ?>">
     <input name="ticket_totals" type="hidden" id="ticket_totals" value="<?=$ticket_totals?>">
     <input name="emp" type="hidden" id="emp" value="<?=$emp?>">
     <input name="submit" type="submit" id="submit" value="Submit">
     <input type="submit" name="submit" id="submit" value="Close">
    </form>

这是exec.php上的POST输出: 类型:其他 ticket_totals:0 emp:105 希德:1939年 提交:提交


好的 - 我的语法很差,但现在我很好奇为什么。

我遗漏了引号 - 解决方案就像这样简单: $ sid = $ _POST [“sid”]

现在它就像一个冠军。

任何接受者为什么?我猜想php.ini中有一个需要引号的设置。奇怪的是,我有其他变量从POST数组调用,我没有使用引号,它们工作正常...

4 个答案:

答案 0 :(得分:3)

使用FireBug中的控制台检查POST请求,以查看正在发送的sid值。

如果请求中的sid值正常,请使用var_dump($_POST["sid"]);查看服务器上的结果。

编辑:在访问关联数组时使用引号被认为是好的PHP风格,因为无引号键与常量无法区分:

define('myVar',3);
echo $array[myVar]; // retrieves $array[3], not $array['myVar'];

答案 1 :(得分:1)

尝试回复$sid而不是<?=

// Change that
<input name="sid" type="hidden" id="sid" value="<?=$sid?>">

// With that
<input name="sid" type="hidden" id="sid" value="<?php echo $sid; ?>">

同样在测试时间尝试将输入类型从隐藏更改为文本,以便100%确定$sid包含值。

答案 2 :(得分:0)

使用关联数组键的引号是必需的,虽然它可以在没有它们的情况下工作,但它是不正确的,并且预期会出现不稳定的行为。

答案 3 :(得分:0)

我有同样的问题,尝试使用$ _POST [sid]作为变量。我在想&#34; sid&#34;是一个保留或限制的变量名称,因为我将我的变量更改为$ _POST [snid]并且它工作得很好。这是我的代码

$sid = $_POST[sid];
$recipient = "($sid) ($_POST[sid])";
if ($_POST[sid] > 0)
{
    $recipient = "It Worked";
}
print $recipient;

当我发布&#34;&amp; sid = 15&#34;时,结果是:

() (15)

原谅。不可能,对吗?我所做的只是改变了使用&#34; sid&#34;作为&#34; snid&#34;的索引,它没有问题。

所以,不要使用$ _POST [sid]。