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.