2010-06-20 2 views

ответ

157

Если вы хотите, чтобы получить возможность отправлять данные в URL из самого PHP кода (без использования формы HTML) это может быть сделано с завитком. Он будет выглядеть следующим образом:

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

Это будет посылать почтовые переменные к указанному URL-адресу, и то, что возвращается страница будет в $ ответ.

+1

Насколько верно ваше решение, я думаю, что OP хотел бы знать, как это сделать с помощью HTML-формы. Хотя вопрос был не очень ясен. –

+0

Мы не смогли понять проблему, но она блокирует программу. – albatross

+0

заботиться о том, чтобы выяснить, что делают 'CURLOPT_FOLLOWLOCATION',' CURLOPT_HEADER' и 'CURLOPT_RETURNTRANSFER'? Я предпочитаю не копировать код, который я не совсем понимаю. –

10

Ваш вопрос не особенно ясен, но если вы хотите отправить данные POST на URL-адрес без использования формы, вы можете использовать либо fsockopen, либо curl.

a pretty good walkthrough of both Вот

+0

Ссылка сломана. – kapa

+0

Link rot stikes снова ... – jfoucher

+2

Ссылка работает сейчас. –

57

Curl-менее вы можете использовать в 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 часто отключается на сторонних хостах, а cURL - единственный вариант – KryptoniteDove

Смежные вопросы