PHP'deki bir URL'ye POST verileri


96

POST verilerini PHP'deki bir URL'ye (form olmadan) nasıl gönderebilirim?

Bir formu doldurmak ve göndermek için bir değişken göndermek için kullanacağım.

Yanıtlar:


199

PHP kodunun kendisinden bir URL'ye veri göndermek istiyorsanız (html formu kullanmadan) curl ile yapılabilir. Bunun gibi görünecek:

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

Bu, gönderi değişkenlerini belirtilen url'ye gönderir ve sayfanın döndürdüğü şey $ yanıtta olur.


2
Çözümünüz doğru olduğu kadar, OP'nin bunu HTML formuyla nasıl yapacağını bilmek istediğini düşünüyorum. Soru çok net olmamasına rağmen.
— Helen Neely

Problemi anlayamadık ama bu programı kilitliyor.
— albatros

2
ne ayrıntılı etmek ister CURLOPT_FOLLOWLOCATION, CURLOPT_HEADERve CURLOPT_RETURNTRANSFERbunu? Tam olarak anlamadığım kodu kopyalamamayı tercih ediyorum.
— Stefan Fabian

2
@Mike bu doğru olsa da, cevapta her şeyin baştan net olmasını veya cevapta açıklanmasını tercih ederim çünkü insanlar genellikle daha fazla soru almamak için bir cevap için stackoverflow'a gelirler.
— Stefan Fabian

1
@Stefan Cevabın tamamen açık olduğunu hissettim ... soruyu ele aldı. Anlama seviyeniz cevap seviyesinin altındaysa, biraz daha araştırma yapın. Ayrıca , php'de bir değişkeni bu şekilde gösterdiğiniz için a'ya $urlsahip olduğunu açıklaması gerekiyor $mu? Çizgiyi nereye çekiyorsun? "... daha fazla soru almamak" kendi kendine öğrenmede, özellikle programlamada başarılı olacak birinin tutumu değildir.
— Mike

75

php5'te kullanabileceğiniz cURL'siz

$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 genellikle üçüncü taraf ana bilgisayarlarda devre dışı bırakılır ve cURL tek seçenektir
— KryptoniteDove

4
@KryptoniteDove Sık sık devre dışı bırakıldığını biliyorum. Cevabımın üstüne bir satır koyduğum için "CURLESS"
— Doktora Burak Öztürk

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.