我使用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);
答案 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。