从浏览器获取相同的会话到 Adobe
Posted
技术标签:
【中文标题】从浏览器获取相同的会话到 Adobe【英文标题】:Getting same session from browser into Adobe 【发布时间】:2018-04-20 14:00:19 【问题描述】:我正在使用 PDF 表单,并且能够将信息发送到 php 脚本,当我将其作为 html 发送时,该脚本可以正确获取数据字段值。
我的问题是我想通过让用户登录我创建的页面来知道是谁发送了表单。当他连接时,我无法获取他的 ID,因为会话和 cookie 保留在浏览器中,当我通过单击提交按钮发送表单时,Adobe 程序会获取另一个 PHPSESSID,并且 Cookie 也不同。
有没有办法在同一台机器上同时获得两者? 我尝试使用 IP 进行识别,但这不是一个好方法,因为它们可能位于 NAT 后面。
当我登录网站时,Adobe Acrobat 是否可以获取相同的会话实例或 Cookie Chrome 集?
【问题讨论】:
【参考方案1】:与其尝试这种方式,为什么不使用 php 库来创建一个包含会话 ID 的隐藏字段“会话”的 pdf?
在 PHP 中加载特定会话:
session_id($_POST['my_hidden_value']);
session_start();
// $_SESSION is available now
请记住,在传递带有文件的会话时,它可能被劫持,并且会话将在一段时间后被删除,因此您应该考虑生成链接到用户的“下载密钥”,将其添加到文档中并使用它来确定哪个用户提交了表单。 这样,即使有人拥有下载密钥,他也无法以该用户身份登录。
/e:您可以使用 fpdf 文件来操作 PDF,如下所示:
session_start();
// Load fpdm
require('fpdm.php');
// Create a random session id
$SessionID = md5($_SESSION['userid'] . time());
// Store it in some database here
// Fields to fill out
$fields = array(
'my_hidden_value' => $SessionID
);
// Load pdf, fill field and display it to user
$pdf = new FPDM('template.pdf');
$pdf->Load($fields, false);
$pdf->Merge();
$pdf->Output();
来源(已修改):http://www.fpdf.org/en/script/ex93.pdf FPDF:http://www.fpdf.org
【讨论】:
绝妙的解决方案,我设法用隐藏值填写了表格。以上是关于从浏览器获取相同的会话到 Adobe的主要内容,如果未能解决你的问题,请参考以下文章
从 Adobe Reader 的 ActiveX 控件获取 PDF 文档的页码