За последние 24 часа нас посетили 22800 программистов и 1226 роботов. Сейчас ищет 771 программист ...

работаем с двумя доменами отправка запроса и сессии

Тема в разделе "PHP для новичков", создана пользователем Хейдж, 21 янв 2020.

  1. Хейдж

    Хейдж Новичок

    С нами с:
    1 ноя 2018
    Сообщения:
    16
    Симпатии:
    0
    Всем добрый вечер!

    Я опишу задачу а вы подскажите пожалуйста.

    домен номер 1
    скрипт php
    отправка запроса POST на домен номер 2

    делаю вот так
    Код (Text):
    1. $postdata = http_build_query(
    2.     array(
    3.         'var1' => 'myvalue',
    4.         'var2' => 'myvalue'
    5.     )
    6. );
    7.  
    8. $opts = array('http' =>
    9.     array(
    10.         'method'  => 'POST',
    11.         'header'  => 'Content-Type: application/x-www-form-urlencoded',
    12.         'content' => $postdata
    13.     )
    14. );
    15.  
    16. $context  = stream_context_create($opts);
    17.  
    18. $result = file_get_contents('http://example.com/submit.php', false, $context);
    19. header('Location: http://example.com/obrabotka.php');
    20. exit;

    скрипт который находится на втором домене по адресу в примере http://example.com/submit.php
    создает сессию и сохраняет параметры данных которые пришли с post запроса

    итог переходя скрипт на страницу примера http://example.com/obrabotka.php не имеет данных сессии

    не уверен что очень понятно объяснил

    если кратко два домена: скрипт с первого домена отправляет пост запрос во второй домен скрипт которого получает пост данные и записывает в сессию и далее переходит на страницу того же второго домена и работает с данными сессии
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.825
    Симпатии:
    738
    Адрес:
    Татарстан
    Вы точно понимаете что такое сессия, для чего она и как работает?

    К чему эти фокусы вообще - какую задачу вы решаете так?
     
  3. Хейдж

    Хейдж Новичок

    С нами с:
    1 ноя 2018
    Сообщения:
    16
    Симпатии:
    0
    мне нужно из одного домена передать параметры в другой домен
    --- Добавлено ---
    если кратко два домена: скрипт с первого домена отправляет пост запрос во второй домен скрипт которого получает пост данные и записывает в сессию и далее переходит на страницу того же второго домена и работает с данными сессии
     
  4. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.794
    Симпатии:
    650
    Просто сделай форму (возможно, со скрытыми полями) с обработчиком на др. домене.
    --- Добавлено ---
    А то ты авторизуешь сервер, а не пользователя.
     
  5. Хейдж

    Хейдж Новичок

    С нами с:
    1 ноя 2018
    Сообщения:
    16
    Симпатии:
    0
    тогда пользователь их будет видеть и сможет отредактировать, а мне нужно чтобы параметры которые отправляются не могли быть отредактированы
     
  6. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.794
    Симпатии:
    650
    А нафига аутентифицировать пользователя не его данными?
     
  7. Хейдж

    Хейдж Новичок

    С нами с:
    1 ноя 2018
    Сообщения:
    16
    Симпатии:
    0
    я опишу задачу более простым примером

    первый домен вот с него запускаем скрипт который в свою очередь знает идентификатор пользователя который его запустил
    мне нужно чтобы этот скрипт отправил идентификатор на второй домен уже другому скрипту
    и далее я работал с этим скриптом и скрипт знает что это мой идентификатор так как он был получен с моего запроса

    и чтобы также могли скриптом пользоваться другие пользователи и скрипт понимает что он получает идентификатор с первого скрипта с первого домена
    --- Добавлено ---
    понимаете ли вы что мне нужно?
    --- Добавлено ---
    возможно код который я привет это пример для объяснения и чтобы решить эту задачу нужно понимать как это лучше всего сделать и каким методом
    поэтому я спрашиваю у вас совета и возможно примера
     
  8. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.794
    Симпатии:
    650
    Если это просто идентификатор, а не полноценные аутентификационные данные, помести его в скрытое поле формы.
     
  9. Хейдж

    Хейдж Новичок

    С нами с:
    1 ноя 2018
    Сообщения:
    16
    Симпатии:
    0
    но получается тогда можно будет отсылать без проверки
    то есть вы откроете в браузере редактор кода и впишете свое значение разве это не так?
    --- Добавлено ---
    мне нужно чтобы запрос вида POST отправлялся получается както анонимно чтобы пользователь не смог отредактировать посылаемые данные и даже чтобы не видел что посылается на другой скрипт, так можно сделать?
     
  10. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.794
    Симпатии:
    650
    Так. Но если у меня есть свой идентификатор, нафиг мне нужна твоя прокладка?
    --- Добавлено ---
    Тогда сделай на первом домене полноценную прокладку, не перенаправляя пользователя на др. домен.
     
  11. Хейдж

    Хейдж Новичок

    С нами с:
    1 ноя 2018
    Сообщения:
    16
    Симпатии:
    0
    потому что сервер номер 1 знает что вы это вы, а второй сервер отдельный
    мне нужно второму отослать идентификатор и обрабатывать через второй сервер то что мне нужно
    --- Добавлено ---
    мне нужна работа именно при взаимодействии двух серверов - один главный, а второй обработчик делает тяжелые обработки.
    у них у обоих разные домены.
    --- Добавлено ---
    по сути мне просто нужно передать параметры с первого сервера на второй и чтобы это было анонимно и пользователь не мог ничего отредактировать и увидеть в пересылаемых данных
     
  12. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.794
    Симпатии:
    650
    Тогда у тебя было приблизительно правильно. Но, естественно, авторизовать пользователя ты так не сможешь.
     
  13. Roman __construct

    Roman __construct Активный пользователь

    С нами с:
    27 апр 2019
    Сообщения:
    1.270
    Симпатии:
    112
    Хейдж, а собственно вопрос-то в чем именно заключается?
     
  14. Хейдж

    Хейдж Новичок

    С нами с:
    1 ноя 2018
    Сообщения:
    16
    Симпатии:
    0
    как передать параметр с одного сервера на другой причем они на разных доменах
    и чтобы передаваемые параметры нельзя было посмотреть или отредактировать пользователям
     
  15. Roman __construct

    Roman __construct Активный пользователь

    С нами с:
    27 апр 2019
    Сообщения:
    1.270
    Симпатии:
    112
    Ок, давай приведем к человекопонятному виду? :)

    1. Пользователь обращается к серверу1 (domen1.com) и скажем передает ему переменную var которая равна 1

    2. Сервер1 передает эту переменную серверу2 (domen2.com) с помощью, скажем, GET-запроса.

    а дальше что предполагается?
     
  16. Хейдж

    Хейдж Новичок

    С нами с:
    1 ноя 2018
    Сообщения:
    16
    Симпатии:
    0
    отправление запроса должно быть анонимно смотрите
    пользователь обратился к серверу №1 где скрипт смог идентифицировать пользователя и говорит ему твой идентификаторв var = 17
    вот скрипт с первого сервера должен передать этот var второму серверу но так чтобы нельзя было посмотреть какие данные передал сервер номер 1 серверу номер 2
    я имею ввиду что если в html <form> посылаешь запросы то данные можно а) увидеть какие были отправлены б) пользователь может модифицировать отправляемые данные для отправки

    далее нужно чтобы сервер 2 на котором скрипт получит переменную var с первого сервера смог работать с этой переменной
    например скрипт что-то делает и переключается на другой скрипт внутри сервера номер 2 и дальше продолжает работать
    --- Добавлено ---
    upload_2020-1-22_0-34-49.png
     
  17. Roman __construct

    Roman __construct Активный пользователь

    С нами с:
    27 апр 2019
    Сообщения:
    1.270
    Симпатии:
    112
    чем дальше, тем непонятней))

    ок, смотри:

    1. Я (юзер от первого лица))) запрашиваю https://domen1.com?var=17

    domen1.com:

    PHP:
    1. <?php
    2.      
    3. $var = $_GET['var'];
    4. $var = $var + 100500;
    5. $result = file_get_contents('https://domen2.com?var='.$var);
    6. echo $result;
    domen2.com:

    PHP:
    1. <?php
    2.  
    3.     $var = $_GET['var'];
    4.     $var = $var + 100500100500100500;
    5.     echo $result;

    Так? Или чего-то не хватает здесь? (я пытаюсь тебя понять)))
    --- Добавлено ---
    btw, уже до завтра :) доброй ночи.
     
  18. Хейдж

    Хейдж Новичок

    С нами с:
    1 ноя 2018
    Сообщения:
    16
    Симпатии:
    0
    все так только вот в domen1.com:

    получается так: скрипт получил данные с пост запроса

    и далее должен перейти на новую страницу другого скрипта и работать с данными которые были получены

    header('Location: http://example.com/obrabotka.php');// этот скрипт содержится на domen2.com
    exit;
    --- Добавлено ---
    вообще как я подумал что если в domen2.com в скриптах я открою сессию то смогу работать с этими данными
    но когда domen1.com: делает всю скриптовую часть и в конце делает переход header('Location: http://example.com/obrabotka.php');

    то сессии нету
    возможно потому что не так сделан принцип, поэтому я и попросил у вас помочь мне как этого добиться

    если все равно не понятно напишите мне об этом где и что не понятно
     
  19. Roman __construct

    Roman __construct Активный пользователь

    С нами с:
    27 апр 2019
    Сообщения:
    1.270
    Симпатии:
    112
    Хейдж, давай поступим иначе: ты можешь просто описать что именно должно делать это приложение? Без "пост-запросов" и "сессий".

    Какой вообще смысл скакать с одного домена на другой? То есть что должно получиться в конечном итоге и почему именно таким образом?
     
  20. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.825
    Симпатии:
    738
    Адрес:
    Татарстан
    Про сессию забудьте.
    Делаете на втором домене api, в которое посылаете необходимые данные с первого домена. Задача выполнена?

    А вообще сдается мне - выне можете абстрагироваться от выбранного решения и просто описать словами, что делает пользователь вообще, зачем два домена. Сделайте это и возможно вам подскажут другой способ решения
     
    Roman __construct нравится это.
  21. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    @Хейдж, сессия - это как раз и есть те данные которые пользователь не может модифицировать. Если мало сессии, то есть база данных. На кой ляд два домена покамест не понятно. Но в любом случае реализация дикая. Все можно сделать на одном домене включая api для обращения хоть из космоса, а не то что с другого домена.
     
  22. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    @Хейдж, сессии как таковые тут действительно не помогут, потому что.
    В развитие #8:
    пользователь обращается к domain1 за авторизацией...
    domain1 обращается к domain2
    domain2 сохраняет у себя в базе id пользователя и свежесгенерированный UUID, например, который возвращает domain1.
    domain1 передаёт (возращает) пользователю UUID
    пользователь обращается к domain2, передавая UUID.
    domain 2 сверяется с базой и выполняет, или не выполняет аутентификацию с авторизацией... тут уже актуальна "сессия", поскольку обращение к domain2 выполняет пользователь...
    ***
    Так-то речь наверняка идёт о протоколе OAuth и прочих access-токенах... o_O
     
  23. Хейдж

    Хейдж Новичок

    С нами с:
    1 ноя 2018
    Сообщения:
    16
    Симпатии:
    0
    Задача следующая: два сервера между собой обмениваются данными, один другому посылает, (звучит прям как анекдот)
    мне нужно чтобы сервер А: который знает идентификатор пользователя
    передал серверу Б этот идентификатор и далее внутри сервера Б можно было работать обрабатывая данные исходя из идентификатора который он получил
    передача идентификатора (назовем лучше переменными) должна быть анонимна тоесть пользователь чтобы не мог увидеть что передается и отредактировать (речь об html form submit имею ввиду что такое смысла нет предлагать)
     
  24. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    @Хейдж, ты безнадёжен.
    Тебя триста раз попросили описать, что ты хочешь сделать, но ты описываешь своё виденье решения проблемы, вместо того чтобы написать для чего тебе это нужно и озвучить изначальную проблему.
     
    #24 Valick, 22 янв 2020
    Последнее редактирование: 22 янв 2020
  25. Roman __construct

    Roman __construct Активный пользователь

    С нами с:
    27 апр 2019
    Сообщения:
    1.270
    Симпатии:
    112
    ок, вот этот мой пример (это выше по треду):

    https://php.ru/forum/threads/rabotaem-s-dvumja-domenami-otpravka-zaprosa-i-sessii.83293/#post-619455

    в принципе данный функционал реализует

    т.е. если мы предположим что $var - это идентификатор, то это оно и есть.

    чего там еще не хватает до полного счастья?))
    --- Добавлено ---
    ...то есть просто скажи чего не хватает - прикрутим, не вопрос )))