POST-данные в URL-адрес в PHP

96

Как я могу отправить данные POST на URL-адрес в PHP (без формы)?

Я собираюсь использовать его для отправки переменной для заполнения и отправки формы.

Белгин Фиш
источник

Ответы:

199

Если вы хотите отправить данные по URL-адресу из самого PHP-кода (без использования html-формы), это можно сделать с помощью curl. Это будет выглядеть так:

$url = 'http://www.someurl.com';
$myvars = 'myvar1=' . $myvar1 . '&myvar2=' . $myvar2;

$ch = curl_init( $url );
curl_setopt( $ch, CURLOPT_POST, 1);
curl_setopt( $ch, CURLOPT_POSTFIELDS, $myvars);
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt( $ch, CURLOPT_HEADER, 0);
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1);

$response = curl_exec( $ch );

Это отправит переменные сообщения на указанный URL-адрес, а то, что возвращает страница, будет в $ response.

Питер Ансельмо
источник
2
Насколько ваше решение правильное, я думаю, ОП хотел знать, как это сделать с помощью HTML-формы. Хотя вопрос был не очень понятным.
Helen Neely
Мы не смогли понять проблему, но она блокирует программу.
albatross
2
все равно разработать что CURLOPT_FOLLOWLOCATION, CURLOPT_HEADERи CURLOPT_RETURNTRANSFERделать? Я предпочитаю не копировать код, который не совсем понимаю.
Stefan Fabian
2
@Mike, хотя это правда, я бы предпочел, чтобы все в ответе было либо ясным с самого начала, либо объяснено в ответе, потому что люди обычно приходят в stackoverflow за ответом, чтобы не получать больше вопросов.
Стефан Фабиан
1
@Stefan Я чувствовал, что ответ был совершенно ясным ... он касался вопроса. Если ваш уровень понимания ниже уровня ответа, проведите дополнительное исследование. Имеет ли он также должен объяснить , что $urlимеет , $потому что в PHP , что, как вы указать переменную? Где вы проводите линию? «... не получать больше вопросов» - это не отношение человека, который преуспеет в самообучении, особенно в программировании.
Майк
75

cURL-less вы можете использовать в php5

$url = 'URL';
$data = array('field1' => 'value', 'field2' => 'value');
$options = array(
        'http' => array(
        'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
        'method'  => 'POST',
        'content' => http_build_query($data),
    )
);

$context  = stream_context_create($options);
$result = file_get_contents($url, false, $context);
var_dump($result);
Кандидат наук. Бурак Озтюрк
источник
6
file_get_contents часто отключается на сторонних хостах, и cURL - единственный вариант
KryptoniteDove
3
@KryptoniteDove Я знаю, что он часто отключается. Из-за того, что я поставил свой ответ «БЕСЦВЕТНЫЙ» в начало строки
Phd. Burak Öztürk