使用PHP模拟表单提交

时间:2015-06-24 16:15:56

标签: php forms post curl file-get-contents

我正在尝试在PHP生成的电子邮件中创建一个链接到UPS跟踪页面。用于提交跟踪号的页面上的表单如下所示:

<form action="http://wwwapps.ups.com/WebTracking/track" method="post">
    <input type="hidden" name="trackNums" value="'.$returnIn->getOutgoingTrackingNumber().'"/>
    <input type="submit" name="track.x" value="'.$returnIn->getOutgoingTrackingNumber().'" class="linkButton"/>
</form>

如果我在我自己的网站上复制它,它可以正常工作:)

问题是如果我想把它放在一封电子邮件中...... Outlook不会处理表单,所以我创建了一个链接到我们网络服务器上托管的重定向页面,如下所示:

<a href="email_tracking_link.php?ups=TRACKINGNUMBER">TRACKINGNUMBER</a>

现在,在email_tracking_link页面上,我需要将此表单和FORWARD THE USER提交到页面。我可以使用cURL或file_get_contents提交表单,但这会在我自己的站点中呈现页面,而不会在UPS页面上显示任何CSS样式等。我的代码目前看起来像这样:

if (isset($_GET['ups']))
    {
    $url = 'http://wwwapps.ups.com/WebTracking/track';
    $data = array('trackNums' => $_GET['ups'], 'track.x' => $_GET['ups']);

    // use key 'http' even if you send the request to https://...
    $options = array(
        'http' => array(
            'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
            'method'  => 'POST',
            'content' => http_build_query($data),
        ),
    );
    $context  = stream_context_create($options);
    $result = file_get_contents($url, false, $context);
    }

如果我渲染表单并让用户点击按钮,那么它们将被转发到UPS页面,并附带它的CSS等。我希望在没有用户点击按钮的情况下发生这种情况。

如何以编程方式复制此行为?

0 个答案:

没有答案