如何让cURL不在帖子上返回

时间:2011-06-14 19:48:24

标签: php curl

我使用cURL将数据发布到另一个域的php文件(setcookie.php)。

文件setcookie.php应该在该域上设置一个cookie,并将数据发布到该域。

问题是我不想在使用cURL时设置cookie,因为cURL会返回调用文件/域,我猜。

那么如何让cURL不回到调用文件?

或者有更简单的方法吗?

这是我的代码:

$ch = curl_init ("http://<other domain>/setnewcookie.php");
curl_setopt ($ch, CURLOPT_POST, true);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $datatopost);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, false);
$returndata = curl_exec ($ch);

2 个答案:

答案 0 :(得分:0)

以下是您需要做的事情:

$ch = curl_init('http://example.org/setnewcookie.php');

curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

curl_exec($ch);

对于使用cURL的cookie,您需要定义CURLOPT_COOKIEJAR和CURLOPT_COOKIEFILE。另外,如果您不希望将“http://example.org/setnewcookie.php”的内容输出到浏览器,则需要将CURLOPT_RETURNTRANSFER设置为TRUE。

这将在您的服务器上创建一个cookie,cURL可以将其用于后续请求,但不允许您的网站用户使用该cookie。如果意图是针对用户的要在两个站点上登录,这将无法正常工作。

对于跨子域(如www1.example.org和www2.example.org之间),请查看PHP authentication with multiple domains and subdomains

答案 1 :(得分:0)

如果您希望将cookie从domain2发送到浏览器,浏览器需要直接发出请求。

因此,如果你必须从domain1获取信息而用户不能直接获取它,我会以某种方式加密数据并重定向浏览器以将请求发送到domain2,如下所示:

域1 / script.php的

$return_url = 'http://domain1/script2.php';
$request_url = 'http://domain2/setnewcookie.php';
$request = $request_url . '?data=' . url_encode($encrypted_data) . '&return_url=' . urlencode($return_url);
header('Location: ' . $request);
exit;

然后在domain2 / setnewcookie.php中解密数据,设置cookie,完成后,在$return_url的帮助下将用户重定向回domain1。

仍然不确定这是否是你想要完成的事情,HTH。