远程提交表单(从其他页面)

时间:2011-06-21 17:30:30

标签: php forms form-submit

我查看过相关帖子,但我不够专业,无法判断我读过的任何回复是否适用于我的情况。

我有一个相当复杂的表单 - 表单是从数据库中动态自动生成的,并且有效 - 填写,提交,一切都很好。

现在,这个表单基本上(但不完全)是一个订单 - 所以想象一下,你可以填写多达10个你想要的10个不同的项目(数量等),点击提交,并获得收据。出于此示例的目的,这意味着有一个FORM页面,当用户点击提交时将其发送到RECEIPT页面。

我想要做的是允许用户在某些情况下根本不必处理此表单。例如,如果他们所做的只是获取一个小部件(而不是其他任何东西),我希望他们能够点击小部件个人资料页面上的“购买小部件”按钮并直接进入RECEIPT页面,完全跳过该表单(因为他们不关心任何东西,除了小工具。)

所以,基本上,我希望Widget页面能够调用预填充的表单页面,并预先提交 - 填写Widget相关数据。 (如果我使用了错误的术语,我很抱歉 - 这是由其他人建造的,不幸的是,我做了一些清理/收尾工作,但我不是PHP的专家。)

有什么建议吗?如果可能的话,我真的很乐意保留URL的数据OUT,但如果这会增加一百倍的复杂性,我会使用URL解决方案。

谢谢。


编辑:(包括来自@ AJ答案评论的代码:)

好吧,我想我是那里的一部分。我有以下代码:

print '<form name="input" action="order.php" >';
$field_name = 'widget';
/* fill in */
$field_value = '10';
/* fill in */
echo '<input type="hidden" name="'.$field_name.'" value="'.$field_value.'">';
echo '<input type="submit" value="submit" name="submit" />';
print '</form>';

但这不会触发表格中的以下内容:

if(isset($_POST['submit'])) { print 'triggering'; } else { print 'not triggering'; } 

3 个答案:

答案 0 :(得分:1)

“购买窗口小部件”按钮,无论在哪个页面上实施,点击后都需要能够发送POST请求当前的表单操作脚本>形式。有几种选择:

  • 将现有表单的“隐藏”版本发送给集成商添加“购买窗口小部件”按钮...它实际上实现了所有相同的字段,但输入类型设置为hidden和填写的所有值。

  • 使用jQuery.ajax()之类的内容发送相同类型的请求,但使用javascript代替隐藏的表单字段

答案 1 :(得分:1)

您可以使用隐藏元素(与真实形式相同,使用您自己的值)制作自己的表单,这些元素会发布到与真实表单相同的位置。

答案 2 :(得分:0)

表单只是一种收集数据的方法。在幕后,当提交表单时,浏览器会收集表单中的所有数据,并将其作为POST或GET请求提交给您的服务器。

要模拟表单提交,您只需要以服务器识别它的方式组合所有数据。

这样做很容易:

<?php
    header( "Location: http://yourdomain.com/checkout.php?<data>" );
?>

替换为您的表单数据:如果您有一个名为“city”的表单字段且值为“MyTown”,则值为“12345”的“zipcode”字段将为:

city=MyTown&zipcode=12345

您的代码将是:

header( "Location: http://yourdomain.com/checkout.php?city=MyTown&zipcode=12345" );

通过这种方式,您可以将表单数据提交给服务器,而无需向用户提供表单。