0

最近我一直在使用cURL将数据从自定义 Magento 控制器发布回同一网站上的自定义页面。

但是,我这样做的方式以某种方式破坏了 Magento 的登录数据。所以我尝试了另一种方法。Magento 具有cURL内置的功能 ( Varien_Http_Adapter_Curl)。

我试图通过这个发布,但到目前为止它已经超出了我的想象,并且网络上的文档相当稀疏。我需要这方面的帮助。我有一个$_POST准备好所有数据的字符串。请问有人能告诉我怎么寄吗?

这个:

$url="<URL>";
$curl = new Varien_Http_Adapter_Curl;
$curl->setConfig(array('timeout' => 15));
$curl->write(Zend_Http_Client::POST,$url, '1.1', array(), $poststring);
$result = $curl->read();
$curl->close();

...不发送数据。

编辑:

我试过非 Magento cURL,但不知道会话数据。我仍然不知道如何发送会话数据。现在,我尝试了会话变量,但结果是我可以在一页上设置和提取数据,但是在更改页面时数据会丢失。所以,目前不能在控制器和视图之间使用。

4

2 回答 2

0

更好的是你可以使用magento会话

http://magento-rohan.blogspot.in/2012/03/magento-get-set-unset-session.html

这是如何使用它

于 2012-10-26T07:21:59.843 回答
0

您需要向我们提供有关您要达到的目标的更多信息。基本上你需要告诉我们你在哪里发送 POST 请求?也许是另一个 Magento 实例,甚至是同一个 Magento 网站?您是否希望用户拥有与现在相同的会话?一旦您向我们提供更多信息,我将编辑我的答案。现在,我将尝试根据您提供的输入来猜测是什么困扰着您。

当您从服务器端使用 curl 提交 POST 请求时,这意味着用户不再与您尝试向其提交发布请求的“页面”交互。

如果用户没有与之交互,这意味着它没有发送用户会话信息。

基本上它看起来像这样:

一般

Eric ->(带有会话信息的请求)-> 服务器(哦,是你 Eric,这是专为你准备的回复)

你想做什么

Eric ->(带有会话信息的请求)-> 服务器 ->(没有会话信息的请求)-> 服务器(此服务器不知道 Eric)

因此,为了正确实现这一点,如果我善于假设您的问题是什么,只需将会话信息与您的请求一起传递给第二台服务器。

如果您告诉我我正在了解您的问题,我会添加更多信息。

- -更新 - -

你没有很好地解释你的情况。我告诉你这是因为你使用 cURL 的整个方法可能从一开始就是一个糟糕的决定。例如,如果您尝试在同一个 Magento 代码库中执行代码,并且该代码被困在某个控制器中,也许您可​​以重构您的代码并将该逻辑封装在某个模型中并直接执行它。

但这里是在普通 php 中通过 curl 传递会话信息的示例:

$strCookie = 'PHPSESSID=' . $_COOKIE['PHPSESSID'] . '; path=/';
curl_setopt( $curl, CURLOPT_COOKIE, $strCookie );

Cookie 在 Magento 中或许应该被称为“前端”。我检查了 Varien_Http_Adapter_Curl 它没有任何设置 CURLOPT_COOKIE 选项的方法,所以我建议你使用普通的 curl 设置。您还可以选择扩展适配器并自行添加该选项。只需覆盖“_applyConfig”方法。

于 2012-10-26T08:00:35.070 回答