【问题标题】:Passing Session Data Between ColdFusion and PHP在 ColdFusion 和 PHP 之间传递会话数据
【发布时间】:2013-09-20 10:21:55
【问题描述】:

我一直在做一个客户端项目,将会话数据从 ColdFusion 登录页面传递到 PHP。

有谁知道如何将会话变量从 ColdFusion 传递给 PHP?

【问题讨论】:

  • 您尝试搜索了吗?见:sitepoint.com/forums/…
  • 将会话变量存储在数据库中。
  • 我们使用以下方法来纠正问题。用户在coldfusion中成功登录后,我们将用户重定向到php页面,然后我们设置php会话,再次将用户重定向到coldfusion页面

标签: php session coldfusion


【解决方案1】:

我想把会话数据转换成 PHP 可以理解的东西。因此,我可能会将其转换为 JSON,然后将其存储在数据库中。一旦您创建了基本 PHP 会话,就查询数据库并将 JSON 数据处理到您的 PHP 会话中。

您只能使用可序列化的数据(例如字符串、数组和结构)来执行此操作。但是,您可以为非本地处理的数据创建自己的序列化程序。如果您的 ColdFusion 会话包含对象或二进制数据,您将无法将它们传输过来。

【讨论】:

  • 我不会将数组或结构描述为简单的值。
  • @Dan,我认为在 context 可以和不能序列化为 JSON 的内容中,数组和结构可以称为“简单”。相比之下,对象(如实例化的 CFC 和 Java 对象)和二进制数据过于“复杂”,无法序列化为 JSON。
  • 在 CFML 上下文中,isSimpleValue( AnArray ) 为 false。正确的术语/区别是 serializable 和 non-serializable。它只适用于 CF 的 JSON 序列化的内置实现——没有什么能阻止开发人员编写他们自己的对象序列化(以及 PHP 端的适当反序列化);它只是不是内置功能。
  • 我对“简单值”一词的使用不准确。我已经编辑了我的回复以反映这一点。我试图传达的是它只适用于可序列化的会话数据。是的,彼得,您可以使用自己的序列化程序来处理 ColdFusion 无法原生处理的事情。
【解决方案2】:

CF 和 PHP 不能共享内存会话变量。但是,还有其他选择,例如使用 cookie。

我曾经使用过这种方法,因为客户希望与 PHP 论坛软件共享会话。我只是使用 cookie 抓取它,通过查找正在设置的 cookie 即<cfdump var="#cookies#">。然后将这些 cookie 转换为会话变量。 (如果您需要相反的方式,请尝试反向执行。)

另一种可能性是使用加密的 URL 变量安全地发送数据。

你也可以参考这个问题:

Using ColdFusion session variables in PHP

【讨论】:

  • 我不会为此使用 cookie。首先,您将服务器端会话数据公开给客户端。另外,如果 cookie 没有通过或被阻止怎么办?您不想依赖客户端来处理可以在服务器上处理的事情。
  • 这就是为什么我还建议使用时间敏感的加密 URL 令牌。这将允许您在不需要数据库的情况下安全地传递变量。根据需要传递安全令牌的数据量,可能是要走的路。
【解决方案3】:

使用您的数据库。

  1. 在 ColdFusion 中生成会话变量。
  2. 将变量存储在您的数据库中。
  3. 初始化 PHP 会话。
  4. 查询数据库并填充 PHP 会话变量。

【讨论】:

  • 实际上美国海军早在 2008/2009 年就已经证明了冷聚变
  • 吸取的教训 - 不要在核反应之后命名产品以避免混淆。
猜你喜欢
  • 1970-01-01
  • 2010-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-03
  • 1970-01-01
  • 2011-07-04
相关资源
最近更新 更多