PHP按会话ID获取Cookie(或以其他方式在两个不同的连接之间传递数据)

时间:2012-02-08 14:59:22

标签: php session cookies apache2 wkhtmltopdf

通常我会尝试将我的问题格式化为一个基本问题,然后解释我的情况,但我正在寻找的解决方案可能完全是错误的,所以这就是问题所在:

我正在为拍卖网站构建目录应用程序,该网站可以保存单个拍品。到目前为止,通过简单地创建一个带有逗号分隔的ID列表的cookie,通过以下方式实现了很好的效果:

$_COOKIE["MyLots_$AuctionId"] = implode(",",$arrayOfIds);

我现在遇到的问题是,当我打印批次时,我通过命令行使用wkhtmltopdf来请求我想要的打印输出的URL,如下所示:

exec("wkhtmltopdf '$urlofmylots' filename.pdf");

问题是我无法将cookie传递给此调用,因为Apache看到了内部请求,而不是用户的请求。我尝试将它放在get字符串中,但是一旦我有超过GET参数的预设限制,该值就会从目标url上的$ _GET数组中消失。我似乎找不到在它们之间发送POST数据的方法。我的下一个可能的想法如下:

  1. 也许只是将sessionID传递给url,看看是否有一种方法我可以使用PHP来挖掘该会话的cookie并提取正确的cookie,但这听起来像是有风险的安全性 - 允许PHP服务器允许(让一个会话知道另一个会话)。例如:

    exec("wkhtmltopdf '$urlofmylots?sessionId=$sessionIdFromThisRequest' filename.pdf");
    
  2. 可能设置会话变量,然后传递该会话ID,看看我是否可以使用PHP来浏览该信息(而不是使用cookie)。

  3. 我是否可以只创建一个数组,并以某种方式让其他脚本知道它,可能包括它?这并没有真正解决wkhtmltopdf期望面向网络的地址作为其第一个参数的问题。

  4. (不是一个想法,而是一些推理)在使用它的其他实例中,我刚刚将一个ID传递给脚本,该脚本生成wkhtmltopdf的标记以进行解析,并且脚本使用该ID来获取来自数据库的数据。我不想将这些数据存储在文件或数据库中,以便在这种情况下将数据从调用者传输到被调用者。由于apache / php处理这些会话的内存分配,因此Cookie和会话似乎更清晰。

  5. 这里的最终问题是我正在尝试获取我的第二个脚本(此处由$ urlofmylots引用)以了解调用脚本可用的数据,但它正在被执行,好像它是外部Web请求,而不是两个从Web根目录调用php脚本。

    有人能在这里提供一些见解吗?

1 个答案:

答案 0 :(得分:1)

您可以考虑将$urlofmylots?lots=$lots_to_print的输出呈现为临时文件,并针对该文件运行wkhtmltopdf