从 php 函数发布 <input> 值

Posting <input> values from php function

我正在使用一个函数来收集使用 mpdf 构建报告所需的所有信息,但为了简单起见,我将所有值传递到一个单独的 php 文件,然后在第二个 php文件它构建了传回的 html 代码。

它目前是使用 $_GET 方法传递的,但现在我收到一个错误 URI is to long...

有没有办法使用 $_POST 方法将所有值传递到 php 文件,而不需要发件人和提交按钮? 我只想将它添加到函数中而不破坏太多代码...

注:

使用 $_SESSION 不是一个选项,因为我正在调用 php 文件以使用以下代码从远程网站构建函数,并使用结果构建 pdf 文件...

代码:

$body = file_get_contents("http://mywebsite.com/templates/statement/body.php".);

如有任何帮助,我们将不胜感激。

如果在 php.ini 中启用了 curl 扩展,您可以使用 curl 到 post 到另一个页面。

$params['pageHeader'] = "some header text";
$params['pageBody'] = "the page body";
$params['somethingElse'] = "other";
$postData = http_build_query($params); // look up http_build_query in the manual

$curlHandler = curl_init();
$url = "http://yourwebsite/post_to_mpdf.php";
curl_setopt($curlHandler, CURLOPT_URL,$url);
// yes, I'm posting alright
curl_setopt($curlHandler, CURLOPT_POST, true); 
curl_setopt($curlHandler, CURLOPT_POSTFIELDS, $postData);
curl_setopt($curlHandler, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($curlHandler);

echo $response;
curl_close($curlHandler);

您不需要为了避免回显而发出 http 请求 html。

您可以只使用输出缓冲:

template.php:

<html>
<head></head>
<body>
<h1><?php echo $title;?></h1>

<ul>
<?php foreach($items as $item):?>
    <li><?php echo $item;?></li>
<?php endforeach;?>
</ul>

</body>
<html/>

main.php:

$title = 'A title';
$items = ['one','two','three'];
//start output buffer
ob_start();
include 'template.php';
//capture output buffer as a string
$html = ob_get_clean(); //magic!

$html 包含以下字符串:

<html>
<head></head>
<body>
<h1>A title</h1>

<ul>
    <li>one</li>
    <li>two</li>
    <li>three</li>
</ul>

</body>
<html/>