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.

Ikan Belgin
sumber

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.

Peter Anselmo
sumber
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);
Phd. Burak Öztürk
sumber
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
10

Pertanyaan Anda tidak terlalu jelas, tetapi jika Anda ingin mengirim data POST ke url tanpa menggunakan formulir, Anda dapat menggunakan fsockopen atau curl.

Berikut panduan yang cukup bagus dari keduanya

jfoucher
sumber