Дані POST на URL-адресу в PHP


95

Як я можу надіслати дані POST на URL-адресу в PHP (без форми)?

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

Відповіді:


195

Якщо ви хочете розмістити дані на 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. Хоча питання було не дуже зрозумілим.
Хелен Нілі

Ми не могли зрозуміти проблему, але вона блокує програму.
альбатрос

2
дбати про те CURLOPT_FOLLOWLOCATION, щоб щось докласти , CURLOPT_HEADERі CURLOPT_RETURNTRANSFERзробити? Я вважаю за краще не копіювати код, якого я не повністю розумію.
Стефан Фабіан

1
@Mike, хоча це правда, я б вважав за краще, щоб все у відповіді було зрозумілим з самого початку або пояснювалось у відповіді, оскільки люди зазвичай приходять до stackoverflow, щоб отримати відповідь, щоб не отримувати більше запитань.
Stefan Fabian

1
@Stefan Я відчував, що відповідь була абсолютно чіткою ... вона стосувалася питання. Якщо ваш рівень розуміння нижче рівня відповіді, то проведіть ще кілька досліджень. Чи потрібно йому також пояснювати, що $urlмає a, $тому що в php саме так ви вказуєте змінну? Де ви проводите межу? "... щоб не отримувати більше запитань" - це не ставлення когось, хто досяг успіху в самонавчанні, особливо програмуванні.
Mike

75

Без курсу, який ви можете використовувати в 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 Я знаю, що його часто вимикають. Завдяки тому, що я ставлю рядок у верхній частині моєї відповіді "КУРСЛО"
кандидат наук. Бурак Озтюрк

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.