【问题标题】:echo my form values on php在 php 上回显我的表单值
【发布时间】:2016-11-27 16:49:49
【问题描述】:

我正在使用下面的代码来打印插入框中的值。但是,在我输入值并单击提交后,什么都没有打印出来。

<html>
<body>

<form action="<?php $_SERVER['PHP_SELF']?>" method="post">
 Name: <input type="text" name="name"><br>
 E-mail: <input type="text" name="email"><br>
<input type="submit">
</form>

<?php
if(isset($_POST["submit"])) {
$name = filter_input(INPUT_POST, 'name');
$email = $_POST['email'];
echo $name;
echo $email;
}

?>
</body>
</html>

关于下面我尝试了这两种情况,因为在简单的一个 $_POST['email'] 上我收到了警告:

$name = filter_input(INPUT_POST, 'name');
$email = $_POST['email'];

警告:

不要直接访问超全局 $_POST 数组

我正在使用 Netbeans IDE 8.2。

【问题讨论】:

  • 大声笑。 Do not Access Superglobal $_POST Array Directly - 这是由愚蠢的 IDE 提供的。请忽略它。
  • NetBeans IDE 不会阻止您使用 PHP。并且使用 $_POST 或任何其他超级全局变量绝不是一个坏主意。
  • @Praveen Kumar 所以使用这种类型的命令没有安全问题?
  • 绝对不是。 :)
  • @ChristosMichael 最后一点:在测试/开发过程中使用错误报告(没有人解决的问题(直到现在))是至关重要的。按照 php.net php.net/manual/en/function.error-reporting.php 上的此链接并将其应用于您的代码。是的,我同意当有人对代码失败的原因给出一个很好的解释时很重要,但是副本(就其本身而言)也可以做到这一点。 快速提示: 使用条件if{...} 时,请使用伴随的else{...};你会掉进去的。

标签: php html forms


【解决方案1】:

永远不会设置:

if (isset($_POST["submit"])) {

改为:

if (count($_POST) > 0) {

您没有任何与name="submit" 匹配的元素。此外,使用isset($_POST["submit"]) 是一种不好的做法,因为我们中的许多人不会说出它的名字。

如果您想检查特定的设置,例如您的情况,您需要这样做:

if (count($_POST) > 0 && isset($_POST["name"]) && isset($_POST['email'])) {

如果您仍然想让您的代码使用上述设置,请在此处添加 namevalue

<input type="submit" name="submit" value="Submit" />

【讨论】:

  • 感谢您的回答。有没有办法在没有 if 情况的情况下打印出值?
  • @ChristosMichael 我也已经解释过了。您只需要确保它们在打印前设置正确吗?否则它将引发引用错误或未定义索引错误。最好在打印之前先检查一下。此外,您可以使用 echo @$_POST["name"] 回显,这样您就不会收到错误消息。但是请不要经常使用它。
  • 为什么不直接使用if ($_SERVER['REQUEST_METHOD'] == "POST") {
  • 也许你不明白我想告诉你什么。不要计算帖子,检查帖子是否设置......没有意义。特指你回答的这一部分count($_POST) &gt; 0
  • @PraveenKumar 正确。
【解决方案2】:

不存在具有属性名称“提交”的 HTML 元素。

&lt;input type="submit"&gt; 替换为&lt;input type="submit" name="submit"&gt;

永远不要使用isset($_POST['submit']),因为它被认为是一种不好的做法。

您可以改为使用!empty($_POST)。这样做被认为是安全的。

【讨论】:

  • 嗨,Perumal,这与我的回答有何不同?只是想知道。
  • 确切地说,你的答案比我的复杂。原因是,您将所有内容都放在一行中,这使得阅读变得拥挤。只是一个建议。
  • 正如我对其他答案的建议,不使用服务器 request_method 是不好的做法。 stackoverflow.com/questions/409351/…
  • @PraveenKumar 现在怎么样?这就是你的意思?
  • @Perumal93 看起来不错。
猜你喜欢
  • 1970-01-01
  • 2020-04-22
  • 1970-01-01
  • 2012-08-08
  • 1970-01-01
  • 1970-01-01
  • 2012-02-21
  • 2015-02-28
  • 2014-12-21
相关资源
最近更新 更多