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.