2010-06-20 16 views

Odpowiedz

157

Jeśli szukasz do wysłania danych do adresu URL z kodu PHP sam (bez korzystania z formularza HTML) można zrobić z dyni. Będzie to wyglądać tak:

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

Ten wyśle ​​zmienne POST do określonego adresu URL, a co powraca strona będzie w $ odpowiedzi.

+1

O ile twoje rozwiązanie jest poprawne, myślę, że OP chciał wiedzieć, jak to zrobić za pomocą formularza HTML. Chociaż pytanie nie było zbyt jasne. –

+0

Nie mogliśmy zrozumieć problemu, ale blokuje on program. – albatross

+0

dbać o to, co robią 'CURLOPT_FOLLOWLOCATION',' CURLOPT_HEADER' i 'CURLOPT_RETURNTRANSFER'? Wolę nie kopiować kodu, którego nie rozumiem w pełni. –

10

Twoje pytanie nie jest szczególnie jasne, ale jeśli chcesz wysłać dane POST do adresu URL bez użycia formularza, możesz użyć funkcji fsockopen lub curl.

Oto a pretty good walkthrough of both

+0

link jest uszkodzony. – kapa

+0

Ogniwo połączenia uderza ponownie ... – jfoucher

+2

Łącze działa teraz. –

57

cURL mniej można użyć w 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); 
+5

file_get_contents jest często wyłączony na hostach innych firm, a cURL jest jedyną opcją – KryptoniteDove

Powiązane problemy