【问题标题】:Can't get $_POST values (php, html)无法获取 $_POST 值(php、html)
【发布时间】:2013-03-13 09:09:05
【问题描述】:

我无法获取从我的 php 文件中的 html 表单发送的 $_POST['name'] 值。我见过很多类似的问题,但没有任何帮助。我有很多包含,所以我认为这是一个范围问题,但我无法弄清楚。

index.php

print_r($_POST); //Returns nothing, tried other ways too

//lot's of variables being defined

include 'sql_data_handlers.php';
//instantiating some things

sql_data_handlers.php

//some functions retrieving data from sql db and finally:
include($DOCUMENT_ROOT . "page.html");

page.html

//html stuff
<?php
//Some conditions
include($DOCUMENT_ROOT . "comment_form.html");
?>

comment_form.html

<form action="index.php" name="comment_form" id="comment_form" method="post">
    <input type="text" name="name" value="Anonymous" required><br>
    //lot's of inputs
    <input type="submit">
</form>

我曾经有 action="send_comment.php",但我意识到它可以变成一个函数,所以我 ctrl+c 并将 send_comments.php 改编为 sql_data_handlers.php 上的一个函数。问题是,现在我无法将index.php 上的$_POST 值用于sql_data_handlers.php(包含在index.php 中)的函数中。

如果可能的话,我会使用action="my_php_function_from_data_handlers.php($args)",但我想不是。顺便说一句,我已经尝试过action=""。这可能看起来很混乱,但这样我只需要一个 .html 来进行站点布局,页面在 sql 上,而 .php 文件完成所有工作。

所有文件的完整源代码(很大,仍在处理中): http://pastebin.com/2nRuCpNx

【问题讨论】:

  • 您是否尝试将 .html 文件的扩展名更改为 .php?
  • 如果您发布表单并使用 Firebug/F12/Developer Tools 检查请求,您能看到 POST 数据吗?
  • Kaii 是对的,在 html 文件 (comment_form.html) 中,您使用 php 代码,这是行不通的。
  • 刚刚将所有 .html 文件的名称更改为 .php,更新了包含但仍然无法获取 $_POST 值。
  • Kaivosukeltaja 开发工具显示“方法:POST 状态:找到 431B”

标签: php forms post include scope


【解决方案1】:

确保您没有任何类型的重定向,因为您使用 index.php 来保存数据,您可能正在重新加载页面以显示更新的 cmets。如果你正在重新加载,$_POST 上将没有数据可以被 print_r() 打印出来。

【讨论】:

  • 就是这样,一旦单击提交按钮,.php 脚本就会刷新页面,因此 $_POST 变量丢失了 - 实际上正在生成数组,我只是忽略了它。谢谢。
  • 你拯救了我的一天。我有一个重写规则,将所有http://my_domain.com 发送到http://www.my_domain.com,并且在此过程中丢失了_POST 数据。也许我的评论可以帮助在 .htaccess 文件中使用重写规则的人。
  • @DudeOnRock 很高兴我能帮上忙 :)
【解决方案2】:

尝试将输入名称属性的值更改为不同于“名称”的值。某些配置存在问题,尤其是 wordpress。

例如:

<input type="text" name="user_name" value="Anonymous" required>

【讨论】:

  • 还有其他名称的输入,没有一个正在发送。
  • @user117893 我明白了,但我仍然知道它会引起麻烦。尝试没有坏处,对吧?
【解决方案3】:

你介意改变你的

.html 文件名到 .php 文件名

您的代码在我的本地服务器中运行,因为有时不同之处在于您的网络服务器的配置方式。

在 Web 服务器中运行时,最好在文件中使用 .php

【讨论】:

  • 我已经这样做了,结果是一样的 - 我无法获得 $_POST 值。
  • 是的。正如我所说,$_POST 请求之前已发送到 send_cmets.php。问题是 index.php 由于某种原因没有得到它们。
  • 那很奇怪..我尝试并得到结果..尝试使用不同的操作而不是 index.php
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-16
  • 2013-03-05
相关资源
最近更新 更多