使用PHP将POST数据从一个网页传递到另一个网页

时间:2009-03-24 23:40:33

标签: php post

搜索没有找到类似的问题,因此:如何将PHP用于生成一个页面的POST数据从该页面传递到另一个PHP生成的页面?我有:

  • 第1页上的表单,通过POST将数据发送到PHP脚本。
  • 第2页由该脚本生成,并显示由外部程序使用第1页上的条目和后端数据库生成的一个或多个图形。此页面还有另一个表单,其中包含使用新选项重新生成图表的选项(例如放大或截断图表)。
  • 如果需要,将使用相同的PHP脚本生成第3页,使用从第1页和第2页粘合在一起的POST数据。除图表外,其基本外观与第2页相同。
  • 第4,5,6页...应以与第3页相同的方式生成。

那么,如何将用于生成第2页的POST数据放入第3页的POST数据中?

编辑:由于组织政策,不能使用cookie(因此会话不可行)。 GET是不受欢迎的,因为我们不希望输入显示在URL中。

5 个答案:

答案 0 :(得分:13)

我记得很久以前一直在努力解决这个问题,想知道为什么我根本无法使用修改后的POST标头重定向。原因是重定向实际上被认为是GET。

无论如何,您需要将帖子变量存储在隐藏字段中。

<input type="hidden" name="someValueFromPageOne" value="blah">

我建议为每个表单中的所有字段名称添加前缀,以便在最后的合并阶段轻松区分它们。

<input type="hidden" name="pageOne_firstName" value="Joe">
<input type="hidden" name="pageTwo_streetNumber" value="22">
编辑:正如其他人所提到的,使用会话持久保存数据是一种可能性,但这对于维护临时状态非常复杂,例如页面刷新或使用后退按钮会使维护变得困难。除非您遇到极端情况,否则使用字段保存数据要容易得多,因为它们更容易在刷新和其他浏览器行为中存活。

答案 1 :(得分:2)

使用GET。

在我看来,POST请求应该修改某些内容(例如,将记录添加到数据库中)。 GET请求应检索某些内容(例如搜索查询的结果)。

如果你想使用POST,请查看PHP会话。

答案 2 :(得分:2)

会话很痛苦,如果你需要它们,你已经实现了它们。

正如@Soviut上面所说,隐藏的输入字段可能就是这样做的。

答案 3 :(得分:2)

Wez Furlong最近在他的博客上写了php5版本(标题为来自php的HTTP帖子,没有cURL):

function do_post_request($url, $data, $optional_headers = null)
{
$params = array('http' => array(
'method' => 'post',
'content' => $data
));
if ($optional_headers!== null) {
$params['http']['header'] = $optional_headers;
}
$ctx = stream_context_create($params);
$fp = @fopen($url, 'rb', false, $ctx);
if (!$fp) {
throw new Exception("Problem with $url, $php_errormsg");
}
$response = @stream_get_contents($fp);
if ($response === false) {
throw new Exception("Problem reading data from $url, $php_errormsg");
}
return $response;
}

在帖子中他提到他总是要查找如何做到这一点。有趣,因为他是核心开发人员之一!

答案 4 :(得分:0)

如果您决定使用dbms选项咬掉会话路由,我很幸运能够设计一个状态类来保存这些东西,并使用JSON将对象序列化到会话记录中的单个大字段。