2010-06-20 2 views
73

Come posso inviare i dati POST a un URL in PHP (senza un modulo)?Dati POST a un URL in PHP

Ho intenzione di usarlo per l'invio di una variabile per completare e inviare un modulo.

risposta

157

Se stai cercando di inviare dati a un URL dal codice PHP stesso (senza l'utilizzo di un modulo HTML) può essere fatto con l'arricciatura. Si sarà simile a questa:

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

Questo invierà le variabili POST all'URL specificato, e ciò che la pagina rendimenti saranno in $ risposta.

+1

Nella misura in cui la tua soluzione è corretta, penso che l'OP volesse sapere come farlo con il modulo HTML. Anche se la domanda non era molto chiara. –

+0

Non siamo riusciti a capire il problema ma blocca il programma. – albatross

+0

cura di elaborare cosa fare 'CURLOPT_FOLLOWLOCATION',' CURLOPT_HEADER' e 'CURLOPT_RETURNTRANSFER'? Preferisco non copiare il codice che non capisco completamente. –

10

La tua domanda non è particolarmente chiara, ma nel caso in cui desideri inviare i dati POST a un url senza utilizzare un modulo, puoi utilizzare fsockopen o curl.

Ecco a pretty good walkthrough of both

+0

link è rotto. – kapa

+0

Link rot colpisce ancora ... – jfoucher

+2

Il link funziona ora. –

57

curl-meno si può utilizzare in 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 è spesso disabilitato su host di terze parti e cURL è l'unica opzione – KryptoniteDove