Я хочу создать форму метода POST, которая отправляет детали в PHP-скрипт на другом сервере (то есть не его localhost). Возможно ли это? Я думаю, что GET в порядке, возможно ли POST?
<form method="POST" action="http://the.other.server.com/script.php">
Если вы хотите сделать это на своем сервере (т. Е. Хотите, чтобы ваш сервер выступал в качестве прокси-сервера), для этого вы можете использовать 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">
Есть еще один вопрос о переполнении стека, который показывает лучший способ URL-запроса переменных. Это лучше, потому что метод, показанный в ответе выше, ломается, когда вы используете вложенные ассоциативные массивы (они же хеши).
Как использовать массивы в запросах cURL POST
Если вы действительно хотите создать эту строку запроса вручную, вы можете. Тем не менее, http_build_query сделает ненужным раздел "url-ify the data for POST". – Бенджамин Пауэрс 28.11.12 в 2:48