【问题标题】:php: Session data lostphp:会话数据丢失
【发布时间】:2013-04-15 19:59:06
【问题描述】:

我在 API 调用期间使用 php Session 在服务器上存储值。

这里的问题是,在我的本地服务器上工作正常,而在实时服务器上,会话中没有存储任何内容。

这是工作流程,基本上我有一个调用 Magento API 的独立脚本:

[Script calling API ] -> [Magento Server]

在 Magento 方面:

  1. API 被调用
  2. API 在会话中设置一些值
  3. 观察者尝试读取这些值

奇怪的是,如果我在本地 Magento 服务器(DEV 的副本)上运行 API 调用,调用 Magento DEV 服务器时一切正常,会话变量为空。

这就是我设置会话值的方式:

Mage::getSingleton('admin/session')->setApiQuoteId($quoteId); 

但是我很确定代码部分没问题(因为它在这里工作正常)我的疑问是:

  1. 我可以在不使用浏览器的情况下使用会话,而是使用脚本/API 调用来访问服务器吗?
  2. 任何服务器设置都可能破坏上述功能?

本地服务器:PHP - 5.4.6

开发服务器:PHP - 5.2.17

【问题讨论】:

  • 检查服务器配置中的register_globals 并确保它已关闭
  • register_globals 在开发服务器上关闭
  • 确保你有 session_start();在您浏览的每个文件的顶部(虽然不需要,但必须有一个 session_start(); 在您当前用户环境的顶部)。
  • jonast92 这不是问题 Magento 以正确的方式管理会话并且在本地它正在工作(相同的代码)

标签: php api magento session session-variables


【解决方案1】:

会话由 cookie 标识。如果您的 api 无法保存 cookie 并每次都发送它,那么您每次都会丢失会话变量,因为将分配一个新的会话。

【讨论】:

  • 你在本地使用浏览器吗?
  • 我总是使用浏览器调用脚本文件(test.php)。我只是将 URL 更改为该文件 (test.php) 中的 API 服务器,以便在本地 Magento 或 DEV Magento 上测试它
  • 浏览器原生支持cookies。 api调用是完全不同的。通常 api 没有保留 cookie 并在每个请求中重新发送它们的能力。也许我的问题错了,在这种情况下,更多的解释会有所帮助。回答第一个问题:通常 api 不能使用会话,而浏览器默认使用会话(无论如何,大多数都是)。
  • 奇怪的是,在一台服务器上它在另一台服务器上运行良好,而不是......无论如何你有替代方法而不是使用会话吗?
  • 我想你可以试试看。但是 afaik 在您的开发版本和测试版本之间没有与该区域相关的任何内容,但我可能是错的。那段时间有很多版本。
猜你喜欢
  • 2014-10-04
  • 1970-01-01
  • 2020-08-24
  • 1970-01-01
  • 2013-08-10
  • 2012-05-09
  • 2012-06-03
  • 1970-01-01
相关资源
最近更新 更多