【发布时间】:2019-12-13 23:26:47
【问题描述】:
我正在使用 TCPDF 创建用户捕获的数据的一次性文档。
我需要在打印后将页面返回到数据捕获页面。
正如我在TCPDF return to previous page after print dialog closewindow.history.back() 和 window.history.go(-1) 中解释的那样;在 TCPDF 中不起作用(打印后不返回上一页)。
Vidal 建议我使用 iframe。我做到了,而且效果很好,使用$_GET[] 获取变量,直到我发送了图像的base64 编码值。
我收到一个错误:URI Too Long。
base64 值长达数千个字符,$_GET[] 不会接受它。如果我使用 $_POST[] 并将变量发送到 TCPDF 它可以工作,但是我遇到了第一个问题的问题。
我知道将值发送到数据库并从数据库值生成 PDF 是可行的,但由于隐私问题,不能将值存储在数据库中。 PDF 将包含私人信息,并且所有者会收到唯一的副本。
这是我的 iframe 代码:
<?php echo "<iframe src='TCPDF/profiles/profile.php?Name=$name&Surname=$surname&age=$age&othervariables=$othervariables&imgstring=$encodedPhoto' style='position:fixed; top:0; left:0; bottom:0; right:0; width:100%; height:100%; border:none; margin:0; padding:0; overflow:hidden; z-index:999999;'>
Your browser doesn't support iframes
</iframe> "?>
在 TCPDF 中:
$name = $_POST['childName'];
$surname = $_GET['childSurname'];
$age = $_GET['age'];
$encodedPhoto = $_GET['imgstring'];
这是示例代码,还有更多变量正在处理。 11 图像必须编码并发送为pdf。
我已经阅读了$file_get_contents();,但如果不将其上传到服务器,我无法弄清楚它是如何完成的,因为您需要包含path/to/file。
有没有办法使用$_POST 或任何其他方式将数据发送到 iframe 页面?
任何帮助将不胜感激。
【问题讨论】:
-
您的问题不够清楚,无法回答。你没有任何安全问题吗? URL 存储在浏览器的历史记录中,因此将私人信息放在 URL 中是个坏主意。
-
@KIKO Software 感谢您提供有关安全性的建议。简而言之。我的问题是如何从 iframe 的父页面获取变量,包括我转换为 base64 的图像。
-
我认为信息不需要从父页面流向内联框架。两者都是由服务器生成的,信息应该存在于服务器上,因此将信息直接从服务器发送到父页面和内联框架是有意义的。
-
如前所述,我不会将信息存储在服务器上。它由数据捕获页面生成
-
我明白了。但是,这两个页面都是由 PHP 生成的,因此将数据存储在服务器上是有意义的。您可以将其存储在session 中。这是一种在特定用户的 PHP 脚本之间共享数据的简单方法。使用时请注意session hijacking。