Bir PHP komut dosyası içinde başka bir sayfaya göndermek

5 Cevap php

Nasıl bir php script Withing başka bir php sayfasına post isteği yapabilir? Ben html sayfası sunucusu gibi bir ön uç bilgisayar var, ancak kullanıcı bir düğmeye tıkladığında, ben kullanıcıya göstermek için işlem yapmak ve sonra tekrar ön uç sunucuya bilgi göndermek için bir arka uç sunucu istiyorum. Ben arka uç bilgisayarda bir php sayfası var ve bu ön ucuna geri bilgi gönderir söylüyordu. Yani bir kez daha, ben bir php sayfa, başka bir php sayfasına bir POST isteği nasıl yapabilirim?

5 Cevap

Muhtemelen PHP POST isteğini gerçekleştirmek için en kolay yolu, bir extension olarak ya da sadece başka bir işlem için dışarı bombardımanı ya, cURL kullanmaktır. İşte sonrası örnek:

//where are we posting to?
$url = 'http://foo.com/script.php';

//what post fields?
$fields = array(
   'field1'=>$field1,
   'field2'=>$field2
);

//build the urlencoded data
$postvars='';
$sep='';
foreach($fields as $key=>$value) 
{ 
   $postvars.= $sep.urlencode($key).'='.urlencode($value); 
   $sep='&'; 
}


//open connection
$ch = curl_init();

//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST,count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS,$postvars);

//execute post
$result = curl_exec($ch);

//close connection
curl_close($ch);

Ayrıca PHP doğrudan yazılmış oldukça yetenekli bir HTTP istemci sağlar Zend çerçevesi, (gerekli hiçbir uzantıları) sınıfların Zend_Http kümesi kontrol.

PHP işlem için, cURL içine bakmak. Bu sizin arka ucunda sayfaları aramak ve ondan veri almak için izin verecektir. Temelde böyle bir şey yapardı:

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_URL,$fetch_url);
curl_setopt ($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt ($ch,CURLOPT_USERAGENT, $user_agent;
curl_setopt ($ch,CURLOPT_CONNECTTIMEOUT,60);
$response = curl_exec ( $ch );
curl_close($ch);

Ayrıca PHP HTTP Extension içine bakabilirsiniz.

Php yüklemek varsayarsak (dilerseniz, ve en eksiksiz) muhtemelen en kolay yolu, CURL uzantısı vardır.

Örnek parçacık:

//set POST variables
$url = 'http://domain.com/get-post.php';
$fields = array(
                      'lname'=>urlencode($last_name),
                      'fname'=>urlencode($first_name),
                      'email'=>urlencode($email)
               );

//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string,'&');

//open connection
$ch = curl_init();

//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);

//execute post
$result = curl_exec($ch);

//close connection
curl_close($ch);

Credits go to http://php.dzone.com. Also, don't forget to visit the appropriate page(s) in the PHP Manual

  1. Kullanıcıların geri kalanı gibi CURL ile bunu yapmak kolay olduğunu söylüyorlar.

  2. If curl isn't available for you then maybe http://netevil.org/blog/2006/nov/http-post-from-php-without-curl

  3. If that isn't possible you could write sockets yourself http://petewarden.typepad.com/searchbrowser/2008/06/how-to-post-an.html

CURL yöntem çok evet bunu kullanmak iyidir çok popüler. Onbir onları anlayabiliriz, çünkü aynı zamanda bazı ekstra yorumlarla daha bu kodları açıklayabilir.