mPDF传递带参数的URL以创建PDF文件

问题描述 投票:0回答:1

我创建了一个pdf.php

<?php 
include("mpdf60/mpdf.php");

$url = $_GET['url'];

ob_start(); 
include($url);
$html = ob_get_clean();
$mpdf=new mPDF('utf-8', 'A3-L'); 
$mpdf->SetDisplayMode('fullpage');
$mpdf->WriteHTML($html);
$mpdf->Output();
exit;
?>

但是当传递参数例如:

<?php

$url = 'gerencial_consad.php?mes='.$mes.'&ano='.$ano.'&menu=N';

?>

<a href="pdf.php?url=<?php echo $url; ?>">[ Gerar PDF ]</a>

创建文件PDF时出错:

警告:include(gerencial_consad.php?mes = 01):无法打开流:第7行的C:\ wamp64 \ www \ codforv2 \ pdf.php中的结果太大调用堆栈

Time Memory Function Location

1 0.0005 240264 {main}()... \ pdf.php:(!)警告:include():无法打开'gerencial_consad.php?mes = 01'以包含(include_path ='。; C:\ php \ pear ')在第7行的C:\ wamp64 \ www \ codforv2 \ pdf.php中调用堆栈

Time Memory Function Location

1 0.0005 240264 {main}()... \ pdf.php:

请帮帮我!!!!

谢谢!

php url get parameter-passing mpdf
1个回答
0
投票

您不希望包含URL,您希望使用HTTP客户端下载URL的内容。

最简单的方法,可能与allow_url_fopen ini设置有限,是使用file_get_contents功能。

您需要将整个URL传递给该函数:

$url = $_GET['url']; // http://example.com/
$html = file_get_contents($url);
$mpdf->WriteHTML($html);

警告:通过使用未过滤和未经过过滤的用户输入(直接$_GET['url']),您将在应用程序中打开一个安全漏洞。始终将输入限制为您认为安全的内容。

您最好只从请求中获取URL的参数,并将最终的URL组合在一起。

© www.soinside.com 2019 - 2024. All rights reserved.