Dane POST do adresu URL w PHP


96

Jak mogę wysłać dane POST na adres URL w PHP (bez formularza)?

Użyję go do wysłania zmiennej do wypełnienia i przesłania formularza.

Odpowiedzi:


198

Jeśli chcesz wysłać dane do adresu URL z samego kodu PHP (bez użycia formularza HTML), możesz to zrobić za pomocą curl. Będzie to wyglądać tak:

$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 );

Spowoduje to wysłanie zmiennych postu do określonego adresu URL, a to, co strona zwróci, będzie w $ response.


2
O ile twoje rozwiązanie jest poprawne, myślę, że OP chciał wiedzieć, jak to zrobić za pomocą formularza HTML. Chociaż pytanie nie było zbyt jasne.
— Helen Neely,

Nie mogliśmy zrozumieć problemu, ale blokuje on program.
— albatros

2
dbają, aby opracować co CURLOPT_FOLLOWLOCATION, CURLOPT_HEADERi CURLOPT_RETURNTRANSFERzrobić? Wolę nie kopiować kodu, którego nie do końca rozumiem.
— Stefan Fabian

2
@Mike, chociaż to prawda, wolałbym mieć wszystko w odpowiedzi, aby było jasne od początku lub wyjaśnione w odpowiedzi, ponieważ ludzie zwykle przychodzą do przepełnienia stosów, aby uzyskać odpowiedź, aby nie otrzymywać więcej pytań.
— Stefan Fabian,

1
@Stefan Czułem, że odpowiedź była całkowicie jasna ... odpowiedziała na pytanie. Jeśli twój poziom zrozumienia jest poniżej poziomu odpowiedzi, zrób więcej badań. Czy musi również wyjaśniać, że $urlma a, $ponieważ w php tak wskazuje się zmienną? Gdzie wyznaczasz granicę? „… nie dostać więcej pytań” nie jest postawą kogoś, kto odniesie sukces w samodzielnej nauce, zwłaszcza w programowaniu.
— Mike,

75

bez cURL, którego można używać w 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
Funkcja file_get_contents jest często wyłączona na hostach stron trzecich, a cURL jest jedyną opcją
— KryptoniteDove

3
@KryptoniteDove Wiem, że często jest wyłączony. W związku z tym, że na górze mojej odpowiedzi umieściłem "BEZKRĘTNY"
— dr

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.