Как заставить cURL не возвращаться на почту - PullRequest
0 голосов
/ 14 июня 2011

Я использую cURL для публикации данных в php-файле (setcookie.php) в другом домене.

Предполагается, что файл setcookie.php устанавливает cookie в этом домене с данными, размещенными на нем.

Проблема в том, что cookie не хочет быть установленным, когда я делаю это с cURL, потому что 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 голосов
/ 15 июня 2011

Если вы хотите, чтобы куки отправлялись из домена 2 в браузер, браузер должен сделать запрос напрямую.

Так что, если вам нужно получить информацию из домена 1, а пользователь не должен получать ее напрямую, я бы как-тозашифруйте данные и перенаправьте браузер, чтобы отправить запрос на domain2 следующим образом:

domain1 / 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 и, как только это будет сделано, перенаправьте пользователя обратно в домен1 с помощью $return_url.

Все еще не уверены, что именно этого вы и пытались достичь, HTH.

0 голосов
/ 15 июня 2011

Вот что вам нужно сделать:

$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);

Чтобы файлы cookie работали с cURL, вам нужно определить и CURLOPT_COOKIEJAR, и CURLOPT_COOKIEFILE. Кроме того, если вы не хотите, чтобы содержимое "http://example.org/setnewcookie.php" выводилось в браузер", вам нужно установить для CURLOPT_RETURNTRANSFER значение TRUE.

Это создаст на вашем сервере файл cookie, который cURL сможет использовать для последующих запросов, но, к примеру, пользователь вашего веб-сайта не сможет использовать этот файл cookie. Если пользователь намерен войти на обоих сайтах, это не будет работать как есть.

Для кросс-доменов (например, между www1.example.org и www2.example.org) посмотрите PHP-аутентификацию с несколькими доменами и поддоменами .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...