【问题标题】:URL Too Long when posting base64 encode image using $_GET使用 $_GET 发布 base64 编码图像时 URL 太长
【发布时间】: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

标签: php get base64 tcpdf


【解决方案1】:

使用会话

我看到两个页面,父页面和 iframe,都是使用 PHP 生成的。在这种情况下,您不希望通过$_GET$_POST 从一个脚本到另一个脚本发送太多数据。

您通常会使用sessions 在脚本之间共享数据。在父页面中,您将数据存储在 $_SESSION 数组中,然后在 iframe 中检索它。

使用时请注意session hijacking

【讨论】:

  • 如果我在打印后清除会话变量(以便捕获下一个数据)是否也会清除会话 ID?我不希望用户在每次捕获后登录。
  • 不,当您unset() 某些会话变量时,不会清除会话 ID。用户无需登录即可获得会话。您甚至可以在访问之间保持会话处于活动状态。最好的办法是阅读 PHP 会话,与它们一起玩,并了解它们是如何工作的。
猜你喜欢
  • 2011-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-13
  • 2020-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多