2012-06-18 40 views
1

我攔截了一個貝寶按鈕點擊從我的論壇網站(它沒有PHP能力),所以我可以使用我自己的服務器(其中有PHP)處理額外的安全信息。發送POST數據到一個網站與PHP

一旦我完成處理,我希望將用戶退回到PayPal並提交他們的請求數據。目前,我只是在位置標題中使用相當大的GET查詢字符串,因爲沒有發送敏感數據。這工作非常好。

我希望純粹使用POST,所以它不會用東西將用戶的地址欄垃圾郵件。我聽說你可以使用cURL來做這件事,但是HTTPS連接到PayPal是一個非常好的主意嗎?

任何建議表示讚賞。

+0

如果您的網站沒有PHP功能,你會怎麼使用cURL? – shadyyx

+0

因爲請求已發送到我的服務器,它有PHP。這只是論壇網站不允許的。 – CJxD

+0

curl允許你提出額外的請求。它不允許您爲用戶發佈發佈請求。 – Ikke

回答

1

那麼你可以使用CURL

/* Some params you wish to send */ 
$sEncodedParams = 'foo=Bar%20Baz&key=1234'; 

/* Create a new CURL Object */ 
$ch = curl_init(); 

/* Set the URL */ 
curl_setopt($ch, CURLOPT_URL, $sUrl); 

/* Make CURL use POST */ 
curl_setopt($ch, CURLOPT_POST, true); 

/* Add the POST-Data */ 
curl_setopt($ch, CURLOPT_POSTFIELDS, $sEncodedParams); 

/* SET the Headers */ 
curl_setopt($ch, CURLOPT_HEADER, 0); 

/* Execute the request */ 
curl_exec($ch); 

/* Close CURL */ 
curl_close($ch); 

你甚至可以得到的迴應方法是使用下面

/* Tell CURL to return the response into a variable instead of echoing it */ 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

/* Save the response */ 
$sResponse = curl_exec($ch); 

希望這有助於

問候

編輯返回到一個變量:除了SSL支持(不包含CURL):

/* Timeout */ 
$iTimeout = 30; 

/* EOL style */ 
$sEOL = "\r\n"; 

/* Some params you wish to send */ 
$sEncodedParams = 'foo=Bar%20Baz&key=1234'; 

/* Initialize the SSL-Socket */ 
$rSSLSocket = @fsockopen("ssl://www.domain.com", 443, $iError, $sError, $iTimeout); 

/* Will contain the response data */ 
$sResponse = ''; 

/* If it worked */ 
if($rSSLSocket !== false) { 

    /* Put whatever you need here */ 
    fputs($rSSLSocket, 'POST /path/here HTTP/1.0' . $sEOL); 
    fputs($rSSLSocket, 'Host: www.domain.com' . $sEOL); 
    fputs($rSSLSocket, 'Content-type: application/x-www-form-urlencoded' . $sEOL); 
    fputs($rSSLSocket, 'Content-Length: ' . strlen($sEncodedParams) . $sEOL); 
    fputs($rSSLSocket, 'Connection: close' . $sEOL . $sEOL); 
    fputs($rSSLSocket, $sEncodedParams); 

    while(!feof($rSSLSocket)) { 
     $sResponse .= @fgets($rSSLSocket, 2048); 
    } 
    fclose($rSSLSocket); 
} else { 
    // ERROR 
} 

我希望這會有所幫助。但要小心,因爲fsockopen可能會很棘手

+0

當我需要將transactionID發送回PayPal時,這對於以後的工作很有用,但是肯定會發回回應會將我變成代理並破壞SSL連接?我認爲cURL不會解決問題。 – CJxD

+1

我更新了示例。你也可以看看這個CURL和SSL的例子:http://unitstep.net/blog/2009/05/05/using-curl-in-php-to-access-https-ssltls-protected-sites/ –

+0

如果我發送了此回覆,是否仍允許用戶通過SSL完成PayPal流程?我不得不啓動一個新的SSL連接給我的用戶不是嗎?確切地說,是 – CJxD