1

我有 html 表单,我必须在该表单所在的同一页面上提交该表单,添加 POST 变量,然后所有变量都传递到下一页。我试过这个:

     <form method="POST" action="">
        <input type="TEXT" name="names" />
        <input type="TEXT" name="email" />
        <input type="submit" name="send" />
     </form>

然后是这个 PHP 代码:

if($_POST['send']){

    $_POST['digest'] = "someText here";
    header("HTTP/1.0 307 Temporary redirect");
    header("Location:https://nextpage.com/form");

}

但是当我被重定向到另一个页面时,除了“$_POST['digest']”之外的所有 POST 数据都被发送。我该怎么办?

感谢和抱歉英语不好。

4

3 回答 3

2

您需要在要重定向到的 url 的查询字符串中传递变量。

http://www.php.net/manual/en/function.http-build-query.php

于 2013-04-08T18:48:59.107 回答
2

如果您使用 php 的标头函数,则不能通过 POST 重新传输变量。

您在这里有 2 种选择:

  1. 在 $_GET 中转换 $_POST(例如 http_build_query)
  2. 如果您必须将此数据作为 POST 传输,您可以创建一个空白页面,其中包含输入类型为“隐藏”的表单,然后只需使用 javascript 提交即可。有点难看,但应该可以。
于 2013-04-08T18:50:08.400 回答
2

您需要为此使用 cURL。

    $fields_string = "name=".$_POST['name']."&email=.$_POST['email'];
    $url = "the website you want to post to";
    $cx = curl_init();
        curl_setopt($cx, CURLOPT_URL,$url);
        curl_setopt($cx, CURLOPT_POST, true);
        curl_setopt($cx, CURLOPT_POSTFIELDS,$fields_string);
        curl_setopt($cx, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($cx, CURLOPT_SSL_VERIFYHOST, FALSE);
        curl_setopt($cx, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($cx, CURLOPT_FOLLOWLOCATION, FALSE);
    $init_response = curl_exec($cx);
    curl_close($cx);

http://php.net/manual/en/book.curl.php

于 2013-04-08T18:51:29.040 回答