Здравствуйте друзья, вопрос следующий мне нужно сделать, что бы после отправки формы она проверялась PHP (Это уже есть) и после того как выполняются определённые условия происходил моментальный редирект на другой сайт с отправкой POST , сломал голову, подскажите пожалуйста. Вот часть кода: if (isset($_POST['form'])){ Всё работает и принимает, но как заставить перенаправить сразу с отправкой POST никак ума не приложу, header не работает с POST! } Буду благодарен за любую помощь. Поправил заголовок на более соответствующий твоему вопросу — МодераторЪ
В вопросе ничего сложно нету. Делается легко cURL'ом - https://php.ru/manual/book.curl.html Что-то типа такого (писал по памяти часть, но должно работать ): PHP: // создание нового ресурса cURL $ch = curl_init() // установка URL и других необходимых параметров curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_URL, "http://www.example.com/"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_POSTFIELDS, "param1=4¶m2=7"); //выполнение curl_exec($ch); // завершение сеанса и освобождение ресурсов curl_close($ch); ?> --- Добавлено --- Хотя я невнимательно прочитал про редирект. Я думаю, что это не реально, хотя более опытные форумчане меня поправят. Либо отдельно постом отправлять, отдельно редирект, либо все вместе, НО ГЕТОМ.
Видимо мне стоит обьяснить чуть более подробно, есть платёжная система RoboKassa но у неё все кнопки стандартные, я реализовал ту же самую отправку формы что делает стандартный скрипт RoboKassa. PHP: <form class="form-container" name="mainform" id="fmain" method="post" action="https://auth.robokassa.ru/Merchant/Index.aspx?MrchLogin='.$mrh_login.'&OutSum='.$out_summ.'&InvId='.$inv_id.'&IncCurrLabel='.$in_curr.'&Desc='.$inv_desc.'&SignatureValue='.$crc.'&Shp_item='.$shp_item.'&Culture='.$culture.'" target="_top"> <input class="form-control" style="width: 235px;" type="number" name="FreeOuterSum" placeholder="Укажите сумму пополнения!" value="'.$out_summ.'" min="100" max="50000" /><br /> <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> </form> Дело в том, что указанный мой Action в Form перенаправляет непосредственно на сайт RoboKassa и отправляет параметры методом POST! И получается я никак не могу сделать приём данных из формы в виде: PHP: $out_summ = $_POST['FreeOuterSum']; Так вот в чём проблема, форма должна отправлять сумму, получается я вписываю в форму сумму допустим 150, нажимаю кнопку оплатить! Что должно случится: сумма должна попасть в Action в Form но она не попадает ибо форма отправляется не на мой сайт а на сайт из вне, вот в чём собственно проблема. Собственно вопрос в том как принять отправленную сумму и запихнуть её в Action в моей форме, что бы редирект шёл правильно а если условия не соблюдаются допустим не указал сумму не отправлять форму и выводить сообщение . Другими словами мне нужно перед тем как форма отправиться получить данные из формы а именно FreeOuterSum в виде $out_summ и использовать их в ссылке формы.
Я чет сам туплю жестко =) Это же стандартная форма POST. Только я не пойму зачем тебе перехватывать эту сумму именно из запроса? Вот допустим покупашка нажимает на кнопку купить, ты пишешь в базу запрос на покупку, холдируешь товар скажем на 15 минут или на час и ждешь оплаты. Он уже где нить в корзине нажимает оплатить и улетает оплачивать на робокассу. Когда ответ от робокассы придет ты просто проверяешь и ставишь на его покупку статус оплачено. Схема примерно такая обычно. --- Добавлено --- Если в лоб решать твою задачу, то можно на кнопку еще повесить, еще функцию js, которая аяксом запишет в базу тебе сумму покупки. Тебе в любом случае после ответа робокассы нужно будет проверять сумму оплаты.
Дело в том, что данная функция должна именно пополнять баланс аккаунта а не какие то конкретные товары, есть реализация на одном сайте но как ума не приложу.
зачем тебе вообще нужна эта сумма тогда до отправки? Они сами в ответе пришлют тебе оплаченную сумму! Проверишь ее и все, делай что хочешь
Как бы не так при отправке они запрашивают SignatureValue а состоит оно из md5("$mrh_login:$out_summ:$inv_id:$mrh_pass1:Shp_item=$shp_item"); Все параметры получить не проблема, а вот summ находится в Форме. Скорее всего это сделано, что бы не подделали код.
https://docs.robokassa.ru/#1232 Тут написано, что при произвольной сумме вообще нет OutSum в SignatureValue.
Либо коммерсе-процессинг-костылинг-документинг-нечиталинг-пальцинг-в-небинг-тыкинг-авосинг-заработаинг.
Советую не усложнять. Есть API. Ты видимо читал доки, если знаешь о расчёте контрольной суммы. Так почитай всё до конца. Там описан переход на робокассу по сформированной ссылке. Ссылка это GET-запрос, а не POST. Твой вопрос "как перенаправить с отправкой POST" не имеет смысла.