PHP Post & Redirect с cURL таким же, как HTML-форма

В HTML мы можем создать форму и ввести входные данные, а затем отправить ее как POST в какой-либо пункт назначения; Это означает, что мы отправляем и перенаправляем в одно и то же время, и пункт назначения обнаруживает как одно и то же. Я хочу сделать то же самое, используя cURL; Значит, когда я использую cURL для отправки данных, тогда я должен иметь возможность перенаправлять, используя что-то вроде header (), и назначение ведет себя подобно тому, как процесс выполняется регулярно с помощью HTML-формы.

Является ли это возможным ?!

Я считаю, что вы хотите сделать что-то вроде этого:

Client --> Server A Server A --> POST --> Server B Client <------------------------ Server B 

так что, например, клиент мог бы зайти на сервер B без знания пароля, который известен серверу A.

Если это так , вы можете сделать что-то подобное , но не совсем то, что хотите (что может быть что-то вроде OpenID, хотя и разрешено с OpenID).

Вы можете иметь сервер A, выполняющий POST, и получать ответ, и отправлять ответ Клиенту. К сожалению, вы, вероятно, не можете установить файлы cookie (они будут действительны для субдомена A, и они больше не будут отправляться на сервер B), и сеансы, вероятно, не будут работать по аналогичным причинам.

Возможно, у вас есть сервер A, работающий как полный прокси-сервер: см. Этот ответ. Как я могу очистить содержимое веб-сайта на PHP с веб-сайта, для которого требуется вход в cookie? ,

Платежный шлюз

Большинство банков имеют API, чтобы сделать именно это (Paypal, даже если это не банк, и делает WorldPay ).

Одним из возможных рабочих процессов является отправка всех данных в банк, который отвечает уникальным идентификатором. Затем вы либо показываете всю информацию самостоятельно, либо (особенно предпочитаете банки), банк показывает информацию клиентам, когда вы перенаправляете их с помощью специального URL-адреса и уникального идентификатора.

Клиент может изменить данные в своей форме, но все, что он получает, это прервать транзакцию , поскольку эти две копии данных больше не согласуются, и он не может коснуться копии, которую вы отправили (другие методы и рабочие процессы, конечно, существуют) ,

Если ваша система работает в соответствии с этим документооборотом (или подобным) и использует собственный API-интерфейс банка и предлагаемую практику, пожалуйста, не обращайте на меня внимания и примите мои извинения: вы делаете это правильно. Но на всякий случай, если нет, ну, пожалуйста, подумайте.

Попытка создать собственный рабочий процесс с помощью cURL, возможно, возможна (для некоторых банков это определенно возможно), но подозрительно близка к переводу вашей собственной криптографии , вероятно, будет менее поддерживаться банком и может вызвать некоторый аномальный детектор на часть банка (просто для того, чтобы указать один, много платежей, похоже, поступают с одного и того же IP-адреса или диапазона).

Да, вы можете использовать cURL для переадресации с помощью опции:

 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 

Из руководства :

CURLOPT_FOLLOWLOCATION

TRUE следовать за любым заголовком «Location:», который сервер отправляет как часть HTTP-заголовка (обратите внимание, что это рекурсивно, PHP будет следовать за множеством заголовков «Location:», которые отправляются, если не установлен CURLOPT_MAXREDIRS).