Data POST ke URL dalam PHP


96

Bagaimana cara mengirim data POST ke URL dalam PHP (tanpa formulir)?

Saya akan menggunakannya untuk mengirimkan variabel untuk melengkapi dan mengirimkan formulir.

Jawaban:


199

Jika Anda ingin mengirim data ke URL dari kode PHP itu sendiri (tanpa menggunakan bentuk html) itu dapat dilakukan dengan curl. Ini akan terlihat seperti ini:

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

Ini akan mengirim variabel posting ke url yang ditentukan, dan apa yang dikembalikan halaman dalam $ response.


2
Sejauh solusi Anda benar, saya pikir OP ingin tahu bagaimana melakukannya dengan bentuk HTML. Meskipun pertanyaannya tidak terlalu jelas.
Helen Neely

Kami tidak dapat memahami masalahnya tetapi program itu terkunci.
elang laut

2
peduli untuk menguraikan apa CURLOPT_FOLLOWLOCATION, CURLOPT_HEADERdan CURLOPT_RETURNTRANSFERlakukan? Saya memilih untuk tidak menyalin kode yang saya tidak sepenuhnya mengerti.
Stefan Fabian

2
@ Mike sementara itu benar, saya lebih suka memiliki segala sesuatu dalam jawaban yang jelas dari awal atau dijelaskan dalam jawaban karena orang biasanya datang ke stackoverflow untuk mendapatkan jawaban agar tidak mendapatkan lebih banyak pertanyaan.
Stefan Fabian

1
@Stefan Saya merasa jawabannya sangat jelas ... itu menjawab pertanyaan. Jika tingkat pemahaman Anda berada di bawah tingkat jawaban, maka lakukan penelitian lebih lanjut. Apakah dia juga perlu menjelaskan bahwa $urlmemiliki $karena di php itulah cara Anda menunjukkan variabel? Di mana Anda menarik garis? "... tidak mendapatkan lebih banyak pertanyaan" bukanlah sikap seseorang yang akan berhasil dalam belajar mandiri, terutama pemrograman.
Mike

75

cURL-less dapat Anda gunakan di 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 sering dinonaktifkan pada host pihak ketiga dan cURL adalah satu-satunya pilihan
KryptoniteDove

4
@Kripsiapa Saya tahu itu sering dinonaktifkan. Karena saya meletakkan baris di atas jawaban saya "CURLESS"
Phd. Burak Öztürk

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.