2012-06-18 30 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