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.