За последние 24 часа нас посетили 17495 программистов и 1673 робота. Сейчас ищут 1948 программистов ...

Как перехватить данные, отправляемые на другой сайт

Тема в разделе "Прочие вопросы по PHP", создана пользователем Stinger1231, 4 окт 2017.

  1. Stinger1231

    Stinger1231 Новичок

    С нами с:
    4 окт 2017
    Сообщения:
    9
    Симпатии:
    0
    Здравствуйте друзья, вопрос следующий мне нужно сделать, что бы после отправки формы она проверялась PHP (Это уже есть) и после того как выполняются определённые условия происходил моментальный редирект на другой сайт с отправкой POST , сломал голову, подскажите пожалуйста.

    Вот часть кода:

    if (isset($_POST['form'])){

    Всё работает и принимает, но как заставить перенаправить сразу с отправкой POST никак ума не приложу, header не работает с POST!

    }

    Буду благодарен за любую помощь.

    Поправил заголовок на более соответствующий твоему вопросу
    — МодераторЪ
     
    #1 Stinger1231, 4 окт 2017
    Последнее редактирование модератором: 4 окт 2017
  2. Познающий php

    Познающий php Новичок

    С нами с:
    23 мар 2017
    Сообщения:
    381
    Симпатии:
    74
    В вопросе ничего сложно нету. Делается легко cURL'ом - https://php.ru/manual/book.curl.html

    Что-то типа такого (писал по памяти часть, но должно работать :p):
    PHP:
    1. // создание нового ресурса cURL
    2. $ch = curl_init()
    3. // установка URL и других необходимых параметров
    4. curl_setopt($ch, CURLOPT_POST, 1);
    5. curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
    6. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    7. curl_setopt($ch, CURLOPT_HEADER, 0);
    8. curl_setopt($ch, CURLOPT_POSTFIELDS, "param1=4&param2=7");
    9. //выполнение
    10. curl_exec($ch);
    11.  
    12. // завершение сеанса и освобождение ресурсов
    13. ?>
    --- Добавлено ---
    Хотя я невнимательно прочитал про редирект. Я думаю, что это не реально, хотя более опытные форумчане меня поправят.

    Либо отдельно постом отправлять, отдельно редирект, либо все вместе, НО ГЕТОМ.
     
  3. Stinger1231

    Stinger1231 Новичок

    С нами с:
    4 окт 2017
    Сообщения:
    9
    Симпатии:
    0
    Видимо мне стоит обьяснить чуть более подробно, есть платёжная система RoboKassa но у неё все кнопки стандартные, я реализовал ту же самую отправку формы что делает стандартный скрипт RoboKassa.

    PHP:
    1. <form class="form-container" name="mainform" id="fmain" method="post" action="https://auth.robokassa.ru/Merchant/Index.aspx?MrchLogin='.$mrh_login.'&amp;OutSum='.$out_summ.'&amp;InvId='.$inv_id.'&amp;IncCurrLabel='.$in_curr.'&amp;Desc='.$inv_desc.'&amp;SignatureValue='.$crc.'&amp;Shp_item='.$shp_item.'&amp;Culture='.$culture.'"   target="_top">
    2. <input class="form-control"  style="width: 235px;" type="number" name="FreeOuterSum" placeholder="Укажите сумму пополнения!"  value="'.$out_summ.'" min="100" max="50000"  /><br />
    3. <button type="submit" name="loctelok" id="postbut" class="btn btn-success btn-block" data-toggle="tooltip" data-placement="right" title="Пополнить Баланс"><span class="glyphicon glyphicon-plus"></span> Пополнить Баланс</button>
    4. </form>
    Дело в том, что указанный мой Action в Form перенаправляет непосредственно на сайт RoboKassa и отправляет параметры методом POST!

    И получается я никак не могу сделать приём данных из формы в виде:
    PHP:
    1.  $out_summ = $_POST['FreeOuterSum'];
    Так вот в чём проблема, форма должна отправлять сумму, получается я вписываю в форму сумму допустим 150, нажимаю кнопку оплатить!

    Что должно случится: сумма должна попасть в Action в Form но она не попадает ибо форма отправляется не на мой сайт а на сайт из вне, вот в чём собственно проблема.

    Собственно вопрос в том как принять отправленную сумму и запихнуть её в Action в моей форме, что бы редирект шёл правильно а если условия не соблюдаются допустим не указал сумму не отправлять форму и выводить сообщение .


    Другими словами мне нужно перед тем как форма отправиться получить данные из формы а именно FreeOuterSum в виде $out_summ и использовать их в ссылке формы.
     
    #3 Stinger1231, 4 окт 2017
    Последнее редактирование: 4 окт 2017
  4. Познающий php

    Познающий php Новичок

    С нами с:
    23 мар 2017
    Сообщения:
    381
    Симпатии:
    74
    Я чет сам туплю жестко =) Это же стандартная форма POST.

    Только я не пойму зачем тебе перехватывать эту сумму именно из запроса? Вот допустим покупашка нажимает на кнопку купить, ты пишешь в базу запрос на покупку, холдируешь товар скажем на 15 минут или на час и ждешь оплаты. Он уже где нить в корзине нажимает оплатить и улетает оплачивать на робокассу. Когда ответ от робокассы придет ты просто проверяешь и ставишь на его покупку статус оплачено. Схема примерно такая обычно.
    --- Добавлено ---
    Если в лоб решать твою задачу, то можно на кнопку еще повесить, еще функцию js, которая аяксом запишет в базу тебе сумму покупки. Тебе в любом случае после ответа робокассы нужно будет проверять сумму оплаты.
     
  5. Stinger1231

    Stinger1231 Новичок

    С нами с:
    4 окт 2017
    Сообщения:
    9
    Симпатии:
    0
    Дело в том, что данная функция должна именно пополнять баланс аккаунта а не какие то конкретные товары, есть реализация на одном сайте но как ума не приложу.
     
  6. Познающий php

    Познающий php Новичок

    С нами с:
    23 мар 2017
    Сообщения:
    381
    Симпатии:
    74
    зачем тебе вообще нужна эта сумма тогда до отправки? Они сами в ответе пришлют тебе оплаченную сумму! Проверишь ее и все, делай что хочешь
     
  7. Stinger1231

    Stinger1231 Новичок

    С нами с:
    4 окт 2017
    Сообщения:
    9
    Симпатии:
    0
    Как бы не так при отправке они запрашивают SignatureValue а состоит оно из md5("$mrh_login:$out_summ:$inv_id:$mrh_pass1:Shp_item=$shp_item");

    Все параметры получить не проблема, а вот summ находится в Форме.

    Скорее всего это сделано, что бы не подделали код.
     
  8. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.115
    Симпатии:
    1.244
    Адрес:
    там-сям
    Фишинг?
     
  9. Познающий php

    Познающий php Новичок

    С нами с:
    23 мар 2017
    Сообщения:
    381
    Симпатии:
    74
    https://docs.robokassa.ru/#1232

    Тут написано, что при произвольной сумме вообще нет OutSum в SignatureValue.
     
  10. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Либо коммерсе-процессинг-костылинг-документинг-нечиталинг-пальцинг-в-небинг-тыкинг-авосинг-заработаинг.
     
  11. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Редиректить можно только с передачей данных в GET, поэтому все процессинги и проч. работают с GET.
     
  12. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.115
    Симпатии:
    1.244
    Адрес:
    там-сям
    Советую не усложнять. Есть API. Ты видимо читал доки, если знаешь о расчёте контрольной суммы. Так почитай всё до конца.
    Там описан переход на робокассу по сформированной ссылке. Ссылка это GET-запрос, а не POST.

    Твой вопрос "как перенаправить с отправкой POST" не имеет смысла.