2012-10-25 82 views
0

最近我一直在使用cURL將數據從自定義Magento控制器發回到同一網站上的自定義頁面。來自控制器的Magento帖子

但是,我這樣做的方式打破了Magento的登錄數據。所以我嘗試了另一種方式。 Magento內置了cURL功能(Varien_Http_Adapter_Curl)。

我試圖通過這個帖子,但到目前爲止它已經超過了我的頭,網上的文檔相當稀疏。我需要幫助。我有一個字符串,所有的數據都準備好了。請有人能告訴我如何發送它?

此:

$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的捲曲,但不知道會話數據。我仍然不知道如何發送會話數據。 現在,我嘗試了會話變量,但結果是我可以在一個頁面上設置和提取數據,但是當更改頁面時,數據會丟失。所以,目前不能在控制器和視圖之間使用它。

+1

你想達到什麼,因爲他們用其他方法來實現它?是否在magento或同一臺服務器上的「自定義頁面」? –

回答

0

你需要給我們介紹一下什麼是你想實現更多的信息。基本上你需要告訴我們你在哪裏發送POST請求?也許是另一個Magento實例或甚至相同的Magento網站?你是否期望用戶現在擁有同樣的會話?一旦你給我們更多的信息,我會編輯我的答案。現在我會嘗試根據你輸入的內容猜測是什麼讓你煩惱。

當您從服務器端使用curl提交POST請求時,這意味着用戶不再與您試圖向其提交發布請求的「頁面」進行交互。

如果用戶沒有與它進行交互,那意味着它沒有發送用戶會話信息。

基本上它看起來是這樣的:

通常

埃裏克 - >(請求與會話信息) - >服務器(哦,原來是你埃裏克,這裏是 就是您想要的響應)

你到底做

埃裏克 - >(請求與會話信息) - >服務器 - >(無會話 信息請求) - >服務器(此服務器不知道ERIC)

所以,要正確實現這一點,如果我擅長承擔您的問題,只需將會話信息與請求一起傳遞給第二臺服務器即可。

如果您告訴我,我會在添加更多信息的時候瞭解您的問題。

--- UPDATE ---

你沒有解釋你的情況很好。我告訴你這一點,因爲你從頭開始的整個做法可能是不好的決定。例如,如果您試圖在相同的Magento代碼庫中執行代碼,並且代碼被困在某個控制器內部,也許您可​​以重構代碼並將該邏輯封裝在某個模型中並直接執行。

但這裏是在捲曲傳遞會話信息在純PHP的例子:

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

的Cookie或許應該Magento中被稱爲「前端」。我檢查了Varien_Http_Adapter_Curl,它沒有任何設置CURLOPT_COOKIE選項的方法,所以我建議你用普通的捲曲設置。您還可以選擇擴展適配器並通過自己添加該選項。只需重寫「_applyConfig」方法即可。

+0

我目前的狀態是我不知道如何將會話數據從控制器粘貼到Magento頁面。我試過會話變量和Varien對象變量(getvar(),setvar())。所有這些都可以在控制器或網頁內部進行設置和使用,但是在兩者之間切換時會丟失數據。我試過Magento捲曲,但無法讓它工作。這是推動我的堅果... –

+0

我想過移動代碼,但我需要刷新頁面,所以所有的領域都得到了更新。如果我可以通過Varien對象/頁面之間的會話獲取信息並進行檢索,那麼我會更加難以移動代碼。至於傳遞會話信息,我沒有找到如何更新Magento的會話數據,一旦我得到它傳遞。 –