我无法从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数组调用,我没有使用引号,它们工作正常...
答案 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]。