HTML / PHP Post метод на другой сервер - PullRequest
5 голосов
/ 30 января 2012

Я хочу создать форму метода POST, которая отправляет подробности в скрипт PHP на другом сервере (т.е. не на его локальный хост).Это вообще возможно?Я полагаю, что с GET все в порядке, так возможен ли POST?

Ответы [ 3 ]

20 голосов
/ 30 января 2012
<form method="POST" action="http://the.other.server.com/script.php">
12 голосов
/ 30 января 2012

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

//extract data from the post
extract($_POST);

//set POST variables
$url = 'http://domain.com/get-post.php';
$fields_string = "";
$fields = array(
        'lname'=>urlencode($last_name), // Assuming there was something like $_POST[last_name]
        'fname'=>urlencode($first_name)
    );

//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
$fields_string = rtrim($fields_string,'&');

//open connection
$ch = curl_init();

//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST,count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);

//execute post
$result = curl_exec($ch);

//close connection
curl_close($ch);

Однако, если вы просто хотите отправить POSTзапросив другой сервер, вы можете просто изменить атрибут action:

<form action="http://some-other-server.com" method="POST">
0 голосов
/ 08 февраля 2014

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

Как использовать массивы в запросах cURL POST

Если вы действительно хотите создать эту строку запроса вручную, вы можете. Тем не менее, http_build_query сделает вашу секцию "url-ify данные для POST" ненужной. - Бенджамин Пауэрс 28 ноября 12 в 2: 48

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...