Работа с куками.

Все вопросы касающиеся скрипта ТДС и системы покупки трафика TS пишите сюда. Ответы на вопросы тоже сюда.

Модератор: Begemot

Ответить
-lexikon-
Сообщения: 31
Зарегистрирован: Ср июн 29, 2011 3:41 pm

Работа с куками.

Сообщение -lexikon- » Чт ноя 07, 2019 4:57 pm

Ситуация:
Rule_1 : url_1
Rule_2 : url_2
Rule_3 : url_3
Rule_4 : url_4
Я покупаю трафик условно с параметрами &name= в котором передаются имена Kolya, Marina, Petya, Slava и т.п. передаю этот трафик в ТДС Сутра. Этот траф приходит на (Rule_1 : url_1) - это url партнерки с трафикбеком, с которой траф снова возвращается схему, трафик проходит через все правила: Rule_2 : url_2 -> Rule_3 : url_3 -> Rule_4 : url_4
После перехода между партнерскими ссылками и возвратом с трафикбека все параметры затираются и где Marina или Petya уже не ясно.

Единственный вариант проверить, кто это, ставить сессионную или просто куку с меткой Kolya, Marina, Petya, Slava и т.п. и потом в каком-то правиле прописать, что Marina направо, Kolya налево и т.д.
Суть в том что мне нужно прислать траф на начало схемы, пропустить через все правила и потом определить на выходе, кто есть кто и в соответствии с этим раскидать их туда, куда нужно.

Как это можно сделать функционалом тдс сутры, если это возможно?

PS: Было бы очень здорово, если бы можно было в настройках правил устанавливать и получать значения куки (считать значения куки через мануальный фильтр можно, но там только системная кука)

Ссылка:
BBcode:
HTML:
Скрыть ссылки на пост
Показать ссылки на пост

-lexikon-
Сообщения: 31
Зарегистрирован: Ср июн 29, 2011 3:41 pm

Re: Работа с куками.

Сообщение -lexikon- » Вс ноя 17, 2019 11:09 am

Не дождавшись ответа, стал ковырять мануал (довольно староват он, думаю более свежие примеры и возможности приоткрыли бы больше возможностей).

Выход из ситуации я нашел такой:
В разделе документации "Способы перенаправления" есть таблица, в которой присутствует одна из возможностей писать собственные модули к сутре:
Этот метод позволяет писать свои модули к сутре и совмещать сутру и свои скрипты.
Конечно же для этих целей можно использовать обычный curl:// метод, но у него есть недостаток - внешний скрипт при этом не может передать управление назад в сутру внутренним (виртуальным) перенаправлением.
В версии 2.8 с появлением DeTypo появился способ исполнить внешний php скрипт так, чтобы этот скрипт сделал внутренний редирект в какую-либо схему сутры БЕЗ лишнего перенаправления.
То есть:
sutra->внешний.php->sutra без внешних перенаправлений.
Для того чтобы это работало, нужно чтобы внешний скрипт выдавал "Location: " заголовок в особом формате:
Location: sutra:16&a=b&c=d
То есть в стандартном формате сутры.
При этом Sutra подхватит этот метод и сделает внутреннее перенаправление в схему 16 с заданными вашим скриптом параметрами.
Аналогично можно перенаправить в систему TS:
Location: ts:user
Так вот чтоб поставить свою куку, нужно написать свой скрипт, который будет ставить куку, условно:

Это лишь пример скрипта, не используйте его в таком виде!

cookies.php

Код: Выделить всё

<?php

setcookie('test');

header('Location: sutra:15');

?>
Создаем директорию на домене сутры ('mymod'), имя можно свое, и кладем туда этот скрипт, т.е. как вариант этот скрипт будет лежать по адресу: http://domain_sutra_tds.com/mymod/cookies.php

Добавляем в одну из схем (к примеру в схему 5) правило curl://domain_sutra_tds.com/mymod/cookies.php (без http !!!)

Теперь при переходе по адресу (URL для входящего трафика) http://domain_sutra_tds.com/xxx.cgi?5 будет выполняться скрипт 'cookies.php' и затем будет происходить перенаправление согласно заголовка Location: sutra:15 на схему сутры №15, там уже можно проверять через универсальные фильтры по параметру header:HTTP_COOKIE условие наличия того или иного параметра в заголовках кук, либо можно написать свой модуль, который будет что-то еще делать.

Ссылка:
BBcode:
HTML:
Скрыть ссылки на пост
Показать ссылки на пост

-lexikon-
Сообщения: 31
Зарегистрирован: Ср июн 29, 2011 3:41 pm

Re: Работа с куками.

Сообщение -lexikon- » Пн ноя 18, 2019 4:39 pm

Единственный проблемка в том, если делать перенаправление без лишнего редиректа, т.е.

Код: Выделить всё

header('Location: sutra:15');
и сразу проверить установлена ли кука, то фильтр header:HTTP_COOKIE не сработает!
Чтобы этот фильтр срабатывал должен произойти явный редирект в схему с написанного вами модуля, как показано ниже:

Код: Выделить всё

header('Location: http://domain_sutra_tds.com/xxx.cgi?15');
Но это влияет на скорость.

Ссылка:
BBcode:
HTML:
Скрыть ссылки на пост
Показать ссылки на пост

-lexikon-
Сообщения: 31
Зарегистрирован: Ср июн 29, 2011 3:41 pm

Re: Работа с куками.

Сообщение -lexikon- » Ср ноя 20, 2019 5:35 am

В процессе конечных тестов всплыла еще одна проблема!
Когда написал модуль для чтения кук, который отрабатывал на выходе из сутры, получилось так, что куки хоть и ставились, но вот получить их через

Код: Выделить всё

$_COOKIE
не было возможным, в режиме модуля, разработчиками сделано так, что будет выдаваться пустой массив, выход из этого положения был подсказан поддержкой TDS SUTRA нужно при вызове модуля, передавать ему GET параметр $header:HTTP_COOKIE. Т.е. всё должно быть прописано в правиле схемы вот так:
curl://domain_sutra_tds.com/mymod/GETcookies.php?cookie=$header:HTTP_COOKIE

Таким образом, в коде GETcookies.php переданное значение можно получить как

Код: Выделить всё

$_GET['cookie']
как минимум там будет одно значение установленное самой сутрой и если вы что-то поставили сами, будет и ваш параметр, остается только всё это распарсить и получить то значение, которое вам нужно и дальше уже работать с ним.

Ссылка:
BBcode:
HTML:
Скрыть ссылки на пост
Показать ссылки на пост

Ответить