POST dati a un URL in PHP


94

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

Lo userò per inviare una variabile per completare e inviare un modulo.

Risposte:


193

Se stai cercando di inviare dati a un URL dal codice PHP stesso (senza utilizzare un modulo html), puoi farlo con curl. Sarà simile a questo:

$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 del post all'URL specificato e ciò che la pagina restituirà sarà in $ response.


2
Per quanto la tua soluzione sia corretta, penso che l'OP volesse sapere come farlo con il modulo HTML. Anche se la domanda non era molto chiara.
Helen Neely,

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

2
cura di elaborare cosa CURLOPT_FOLLOWLOCATION, CURLOPT_HEADERe CURLOPT_RETURNTRANSFERfare? Preferisco non copiare codice che non comprendo appieno.
Stefan Fabian

1
@ Mike, anche se questo è vero, preferirei che tutto in una risposta sia chiaro fin dall'inizio o spiegato nella risposta perché le persone di solito vengono a stackoverflow per una risposta per non avere più domande.
Stefan Fabian

1
@Stefan Ho sentito che la risposta era perfettamente chiara ... ha affrontato la domanda. Se il tuo livello di comprensione è inferiore al livello della risposta, fai qualche ricerca in più. Ha anche bisogno di spiegare che $urlha un $perché in php è così che indichi una variabile? Dove traccia la linea? "... non avere più domande" non è l'atteggiamento di chi riuscirà ad autoapprendere, soprattutto a programmare.
Mike

75

cURL-less che puoi usare 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);

6
file_get_contents è spesso disabilitato su host di terze parti e cURL è l'unica opzione
KryptoniteDove

3
@KryptoniteDove So che spesso è disabilitato. A causa di ho messo una riga in cima alla mia risposta "CURLESS"
Burak Öztürk

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.