POST datos a una URL en PHP


96

¿Cómo puedo enviar datos POST a una URL en PHP (sin un formulario)?

Lo usaré para enviar una variable para completar y enviar un formulario.

Respuestas:


196

Si está buscando publicar datos en una URL desde el propio código PHP (sin usar un formulario html), puede hacerlo con curl. Se verá así:

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

Esto enviará las variables de publicación a la URL especificada y lo que devuelve la página en $ respuesta.


2
En la medida en que su solución sea correcta, creo que el OP quería saber cómo hacerlo con el formulario HTML. Aunque la pregunta no estaba muy clara.
Helen Neely

No pudimos entender el problema pero bloquea el programa.
albatros

2
le importa elaborar qué CURLOPT_FOLLOWLOCATION, CURLOPT_HEADERy CURLOPT_RETURNTRANSFERhacer? Prefiero no copiar el código que no entiendo completamente.
Stefan Fabian

1
@Mike, si bien eso es cierto, preferiría que todo en una respuesta sea claro desde el principio o explicado en la respuesta porque la gente generalmente viene a stackoverflow en busca de una respuesta para no obtener más preguntas.
Stefan Fabian

1
@Stefan Sentí que la respuesta era perfectamente clara ... abordaba la pregunta. Si su nivel de comprensión está por debajo del nivel de la respuesta, investigue un poco más. ¿También necesita explicar que $urltiene un $porque en php así es como se indica una variable? ¿Dónde se traza la línea? "... no recibir más preguntas" no es la actitud de alguien que tendrá éxito en el autoaprendizaje, especialmente en la programación.
Mike

75

cURL-less que puedes usar en 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 a menudo está deshabilitado en hosts de terceros y cURL es la única opción
KryptoniteDove

3
@KryptoniteDove Sé que a menudo está deshabilitado. Debido a que puse una línea en la parte superior de mi respuesta "CURLESS"
Phd. Burak Öztürk

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.