最近我一直在使用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,但不了解会话数据。我仍然不知道如何发送会话数据。 现在,我已经尝试了会话变量,但结果是我可以在一个页面上设置和提取数据,但是在更改页面时数据会丢失。因此,目前在控制器和视图之间不能使用它。
答案 0 :(得分:0)
您可以更好地使用magento会话
http://magento-rohan.blogspot.in/2012/03/magento-get-set-unset-session.html
这是如何使用它
答案 1 :(得分:0)
您需要向我们提供有关您要实现的目标的更多信息。基本上你需要告诉我们你在哪里发送POST请求?也许是另一个Magento实例甚至是同一个Magento网站?您是否希望用户现在拥有相同的会话?一旦你给我们更多信息,我将编辑我的答案。现在,我将根据您提供的输入尝试猜测困扰您的是什么。
当您从服务器端提交带有curl的POST请求时,这意味着用户不再与您尝试提交请求的“页面”进行交互。
如果用户没有与之交互,则表示它没有发送用户会话信息。
基本上它看起来像这样:
<强>常强>
Eric - &gt;(带会话信息的请求) - &gt;服务器(哦,这是你Eric,现在是 只为你的回应)
你想做什么
Eric - &gt;(带会话信息的请求) - &gt;服务器 - &gt;(没有会话的请求 信息) - &GT;服务器(此服务器不知道Eric)
为了正确实现这一点,如果我擅长假设您的问题,只需将会话信息与您的请求一起传递给第二台服务器。
如果你告诉我我正在理解你的问题,我会添加更多信息。
<强> --- --- UPDATE 强>
你没有很好地解释你的情况。我告诉你这个,因为你对cURL的整个方法从一开始就可能是错误的决定。例如,如果您尝试在同一个Magento代码库中执行代码并且代码被困在某个控制器中,那么您可以重构代码并将该逻辑封装在某个模型中并直接执行它。
但是这里是在普通php中通过curl传递会话信息的例子:
$strCookie = 'PHPSESSID=' . $_COOKIE['PHPSESSID'] . '; path=/';
curl_setopt( $curl, CURLOPT_COOKIE, $strCookie );
Cookie应该在Magento中称为“前端”。我检查了Varien_Http_Adapter_Curl它没有任何方法来设置CURLOPT_COOKIE选项,所以我建议你选择普通的卷曲设置。您还可以选择扩展适配器并自行添加该选项。只需覆盖“_applyConfig”方法。