【问题标题】:Using $_POST data to create a new html form value使用 $_POST 数据创建新的 html 表单值
【发布时间】:2011-06-30 15:31:42
【问题描述】:

我正在使用post 向我的页面发送信息。我正在使用它来创建一个变量并将该变量传递给一个新的<input>。但是,当我提交新表单时,变量为空。

变量是从发布数据创建的:

$timenotstarted = $_POST["placeholder"]; 

然后在html中内联:

<form name="newform" method="post" action="insert.php">
<input type="text" name="timerset" value="<?php echo $timenotstarted; ?>">
<input type="submit" value="Submit"><
</form>

新表单提交时,name="timerset"的变量为空。

当我在此表单所在的同一页面上回显 $timenotstarted 时,

它将显示其价值。当我尝试以新形式使用它时,它只会“消失”。

编辑:这是发生的事情:

不确定这是否有帮助:http://forexguruguide.com/timer/insert.php

这是整个沙班:

<?php include 'connect.php';
$timenotstarted = $_GET["placeholder"];
$start = $_POST["start"];
$timerset = $_post["timerset"];
echo $timenotstarted . '<br />';
echo $start . '<br />';
echo $timerset . '<br />';
?>

<form name="timeform" method="get" action="insert.php">
<select name="placeholder">
  <option value="1">1 min</option>
  <option value="3">3 min</option>
  <option value="5">5 min</option>
  <option value="10">10 min</option>
</select>
<input type="submit" value="Set timer">
</form>

<form name="startform" method="post" action="insert.php">
<input type="hidden" value="1" name="start">
Timer set to: <input type="text" name="timerset" value="<?php print $timenotstarted?>">
<input type="Submit" value="Start Timer">
</form>

<?php

if ($start==1) {
  $target = time() + ($timerset * 60);
  mysql_query("UPDATE countdowntimer SET target='$target' WHERE id='0'");
  mysql_query("UPDATE countdowntimer SET timenotstarted='null' WHERE id='0'");
  echo 'Timer started' . '<br />';
  echo $target . '<br />';
  echo time(); }
else if (!empty($timenotstarted)) {
  $timenotstarted .= ":00";
  mysql_query("UPDATE countdowntimer SET timenotstarted='$timenotstarted'");
  echo 'Timer set to: ' . $timenotstarted; }
else {
  echo 'Set the timer then start the timer'; }
?>

【问题讨论】:

  • 所以你的第一行代码在insert.php ?
  • 关键的 'placeholder' 不应该是 'timerset' 吗?
  • @jondavidjohn,是的,第一行也在 insert.php 中。为了澄清,我将发布到同一页面。
  • 应该使用$_POST['timerset'] 而不是$_POST['placeholder'],正如@GWW 所说。另外,请使用&lt;?php echo htmlspecialchars($timenotstarted); ?&gt;来避免XSS攻击。
  • @Mark 这不是为了避免任何事情。它是 HTML 标准所要求的。即使没有什么可以保护的。

标签: php mysql forms input echo


【解决方案1】:

我不清楚你在帖子中做错了什么,但这里是如何正确做错的基础知识:

page1.php

<form action="page2.php" method="post">
<input type="hidden" name="foo" value="bar"/>
<input type="submit"/>
</form>

page2.php

<form>
<input name="foo2" value="<?php echo htmlspecialchars($_POST['foo']); ?>"/>
</form>

【讨论】:

  • 不,那也没用。我正在做的是将某些内容发布到带有表单的页面上。我正在使用 php 填充输入值(就像您所做的那样)但是当我提交下一个表单时,它不会提交任何值。事实上,我已经将它设置为&lt;input type="text"&gt;,它甚至用值填充了文本框,但是当我提交表单时,它没有提交值......它没有提交任何值。跨度>
  • 尝试 page2.php,一行:&lt;?php print_r($_POST); 并运行它。如果 $_POST 为空,请尝试使用$_HTTP_POST_VARS。您可能正在使用旧的 PHP。
【解决方案2】:

不应为此使用 POST。这是 GET 的工作

<? if (!isset($_GET['placeholder'])): ?>
<form>
Enter placeholder:
<input type="text" name="placeholder" value="">
<input type="submit" value="Submit">
</form>
<? else: ?>
<form name="newform" method="post" action="insert.php">
<input type="text" name="timerset" value="<?=htmlspecialchers($_GET["placeholder"])?>">
<input type="submit" value="Submit">
</form>
<? endif ?>

【讨论】:

  • @col.,所以我用method="get"提交了第一个表单?
  • @col.,好的,谢谢!我会试一试。如果你有一秒钟:为什么?
  • @Andypandy 如果您想阅读文档,请参阅 rfc 2616。如果您想用眼睛看,请尝试在第二个表单上按 F5 或使用“返回”按钮到达它。您将收到来自浏览器的非常烦人的查询。如果你也有一个秒,我很好奇,为什么是这样的两步形式?
  • @col.,这对我不起作用...与 post 相同的问题。我将尝试截取屏幕截图来说明...感谢您的帮助,我非常感谢!我相信这将是一次学习经历。 2步表单是启动一个定时器...第一个表单将定时器设置为某个时间,然后第二个表单使用设置时传递的信息启动定时器。
  • @Andy 我根本听不懂。计时器?怎么样?似乎是您的计时器不工作(它不应该),而不是这种始终有效的原始形式。你如何使用输入的值?在javascript中?为什么是第二种形式?为什么不在用户按下第一个表单中的按钮后立即启动计时器?
【解决方案3】:

所以,这就是最终奏效的方法。我刚刚重建了第二种形式...:

<form name="testyboy" method="post" action="insert.php">
<input type="hidden" value="1" name="start">
<input type="hidden" value="<?php print $timenotstarted?>" name="testyboy">
<input type="submit" value="Start Timer">
</form>

是一样的。我不知道是什么使它起作用....

无论如何感谢大家的努力!非常感谢。

【讨论】:

  • 唯一的区别:在名为“testyboy”的&lt;input&gt; 上,在表单的第一个版本中,值在名称之后。不知道这是不是问题......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-28
  • 2013-10-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多