cURL как получить ref id

219
28 июня 2017, 00:31

Создал два сайта, один обработчик, второй отправляет ему post запрос с именем домена, первый - второму возвращает код домена (сайта), т.е. на втором сайте после выполнения post запроса открывается сайт который и был в post запросе к первому домену.

Можно как-то от первого домена (скрипта) получить куку на втором домене, чтобы открытие сайта по реферальной ссылке на втором домене считалось за реферальный переход?

На первом сайте я умею сохранять куку в файл, думал этого достаточно, стал проверять статистику - реферальных переходов нет

Помогите разобраться с куками, пожалуйста.

Вот часть основного кода (обработчик)

<?php 
$url = $_POST["url"];

// инициализация сеанса 
$ch = curl_init(); 
// используем User Agent браузера
$user_agent = $_SERVER["HTTP_USER_AGENT"];
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
// установка URL и других необходимых параметров 
curl_setopt($ch, CURLOPT_URL, $url); 
// Имитируем классический браузер и сохраняем COOKIES
curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt ($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
//TRUE для принудительного использования нового соединения вместо закэшированного.
curl_setopt($ch, CURLOPT_FRESH_CONNECT, false); 
// в случае необходимости, следовать по перенаправлени¤м
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
// устанавливаем максимальное время конекта 5 секунд
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
// Опция указывает, что результат будет записан в переменную
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// загрузка страницы и выдача её браузеру 
$page_source = curl_exec($ch);
// Получаю итоговый url после всех редиректов 
$last_url = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);

echo $page_source;
//print_r (curl_getinfo($ch));
// завершение сеанса и освобождение ресурсов 
curl_close($ch); 
?>

как этим кодом вернуть куку на другой сайт - сайт который отправляет данному скрипту url?

Нашел инструкцию но не понял ее http://www.php.su/forum/topic.php?forum=74&topic=1893

А вот код самого сайта (приемник), куда и должна вернуться кука, данный сайт отправляет post запрос первому скрипту

<?php 
// URL скрипта обработчика
$login_url = 'http://сайт.ru/inc.php';
// параметры для отправки запроса
$post_data = array(
'url' => 'http://reflink.ru/id555',
'cookielength' => '-1',
'hash_passwrd' => ''
);
// создание объекта curl
$ch = curl_init();
// используем User Agent браузера
$user_agent = $_SERVER["HTTP_USER_AGENT"];
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
// задаем URL
curl_setopt($ch, CURLOPT_URL, $login_url );
// указываем что это POST запрос
curl_setopt($ch, CURLOPT_POST, 1 );
// задаем параметры запроса
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
// указываем, чтобы нам вернулось содержимое после запроса
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');

// выполняем запрос
$postResult = curl_exec($ch);

curl_close($ch);
echo $postResult;
?>
Answer 1

Да, передать cookies можно, но лучше передавать их не в файле cookie.txt (тем более, если вам требуется только один ref_id), а через параметры POST-запроса. Выставляйте cookies:

setcookie('ref_id', $ref_id, strtotime('+1 year'), '', '');

Затем считываете их в следующем запросе и передаете на второй домен в виде списка параметров.

P.S. И лучше используется для cURL Options массивы, а не задание параметров построчно (лучше curl_setopt_array вместо curl_setopt). Так код короче и становится более читабельным.

READ ALSO
Исключение повторяющих чисел в цикле for

Исключение повторяющих чисел в цикле for

Цикл for выводит такую строку после обработки данных:

207
Ошибка памяти, библиотека Qt

Ошибка памяти, библиотека Qt

Следующий код создает окно и при закрытии:

346
Использование std::find_if для массива (STL)

Использование std::find_if для массива (STL)

Мне необходимо обработать массив и выявить индекс элемента, значение которого меньше определенного(Если таких элементов несколько, то узнать...

229