PHP转发数据发布

问题描述

| 我正在尝试不使用cURL将数据从一页转发到另一页,这可能吗? 目前我已经尝试过
header(\'HTTP/1.1 307 Temporary Redirect\');
header(\'Location: new-location.PHP\');
这很好用,但提供了一个愚蠢的弹出框,还有其他方法吗? 我尝试使用curl但没有任何反应,不确定是否在服务器上启用了curl!     

解决方法

        我认为以下是实现此目标的唯一可能方法,而不是使用位置标头重定向,而是发送此html:-
<!DOCTYPE html>
<html>
    <body onload=\"document.forms[0].submit()\">
        <form action=\"new-location.php\" method=\"post\">
            <?php foreach( $_POST as $key => $val ): ?>
                <input type=\"hidden\" name=\"<?= htmlspecialchars($key,ENT_COMPAT,\'UTF-8\') ?>\" value=\"<?= htmlspecialchars($val,\'UTF-8\') ?>\">
            <?php endforeach; ?>
        </form>
    </body>
</html>
    ,        您可以使用以下内容将发布数据转发到另一个URL。注意,响应是在$ data变量中捕获的,您可以使用该变量进行任何操作。
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,\"http://www.domain.tld/urltopostto.php\");
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_TIMEOUT,100);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,CURLOPT_POSTFIELDS,http_build_query($_POST));
$data = curl_exec($ch);
curl_close($ch);
    ,        如果我正确理解了问题,并且您正在启用ѭ3的Apache服务器上工作,则可以使用URL重写。您可以将request方法设置为条件,然后将原始URL重写为备用URL:
RewriteCond %{REQUEST_METHOD} ^POST
RewriteRule ^index.php new-location.php [L]
    ,        常见的建议是使用cURL或fopen(),但实际上都不会将用户“转发”到另一个页面。 要将用户真正地转发到具有完整$ _POST数据的另一个页面,您可以动态创建一个中间页面,该页面包含一个表单,该表单包含发布数据和JS代码,该代码立即提交表单(如果按钮或链接提交表单,用户未启用JS)。 然后,您将用户转发到该中间页面,并将用户转发到具有完整的#_POST数据的目标页面。如果中间页面没有可见的内容,则用户将不知道该页面在那里。 目标页面可以取消中间页面的链接,因此没有重新提交的机会。     ,        也许,也许您可​​以这样尝试:
header(\"Status: 200\");
header(\"Location: new-location.php\");
exit;