【问题标题】:PHP form is not posting dataPHP表单未发布数据
【发布时间】:2014-09-15 06:41:12
【问题描述】:

我在 HTML/PHP 页面上有一个表单。

我在网站上的其他页面上有完全相同的代码,并且运行良好。我想不通。

表格:

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">

    <input name="prize_id" type="hidden" value="<?php echo $prize_id; ?>" />

    <input name="ContestEntry" type="submit" class="submit" value="Enter me in the Raffle!" />

</form>

我查看了 HTML 源代码,操作填充了正确的页面,$prize_id 填充了值中的正确信息。

PHP:

if(isset($_POST['ContestEntry'])){

    //...code to enter data into form, irrelevent since it won't post anything anyway.

}

else {

    echo 'Nothing posted from form';

}

“没有从表单发布”总是显示,并且没有数据被输入到数据库中。我尝试将表单名称更改为 5 种不同的东西,我想也许某处的名称有冲突,但没有任何效果。

有什么想法吗?

【问题讨论】:

  • 尝试在表单开头转储$_POST 的内容,以查看您从客户端获得了什么。除此之外,您还需要展示更多代码——我们没有什么可继续的了。
  • 我已经把它转储了,没有任何显示:数组 ( )。我这里还能显示什么其他代码,我不知道还有什么相关的。
  • 再次检查您上面的代码是否真的与您的 PHP 文件中的内容完全相同;它应该可以工作,而且您似乎在某个地方有一个隐藏的错字。
  • 完全复制/粘贴,这正是网站上的内容。我已经检查了 100 次以确保没有错字,这让我感到困惑,它应该可以工作。
  • 使用浏览器调试器 (F12) 并检查网络选项卡,然后检查请求并查看发送到服务器的内容。只是看看是客户端问题还是服务器端问题。

标签: php html forms


【解决方案1】:

if 条件不起作用,因为您将其放在按钮上,而不是在表单中创建一个隐藏字段以检查表单是否已提交,因为您已经有一个。或者为这个表单创建新的。

<input name="prize_id" type="hidden" value="<?php echo $prize_id; ?>" />

【讨论】:

  • 我只是尝试将条件添加到隐藏字段,它仍然不起作用,同样的事情... if(isset($_POST['prize_id'])){ } 我一直有按钮的条件,因为按钮有一个值,它总是有效的。
  • @AadilAfzal 在发布表单时传递输入提交按钮名称。
【解决方案2】:

您发布的代码实际上对我有用。

但是,如果您仍然无法使其正常工作,我会尝试检查是否设置了 prize_id 而不是按钮。 PHP 脚本在表单提交时执行。

另外,我建议您不要使用$_SERVER['PHP_SELF'] 作为表单操作。根据https://stackoverflow.com/a/14093363/3593228 的说法,这可以让攻击者轻松插入恶意数据。而是将操作留空。

【讨论】:

    【解决方案3】:

    考虑将您要查找的内容添加为另一个隐藏字段:

    <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    
        <input name="prize_id" type="hidden" value="<?php echo $prize_id; ?>" />
        <input name="ContestEntry" type="hidden" value="Enter me in the Raffle!" />
    
        <input type="submit" class="submit" />
    
    </form>
    

    【讨论】:

      【解决方案4】:

      如果你只需要检查表单是否提交,最好检查请求类型是POST:

      if ($_SERVER['REQUEST_METHOD'] === 'POST') {
          // Process form
      } else {
          // Nothing posted!
      
      }
      

      还将您的提交按钮更改为:

      <button type="submit">Submit</button>
      

      看看会发生什么

      【讨论】:

      • 谢谢。最后,除了检查它是否已提交之外,还需要做更多的工作,但我已经将其剥离到基本的部分,只是为了调试。
      • 还没有。除了表单和表单的php之外,将剥离所有代码的页面,希望有所帮助。
      猜你喜欢
      • 2012-06-28
      • 2016-11-02
      • 2012-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-06
      • 2013-12-03
      • 1970-01-01
      相关资源
      最近更新 更多