Blog de Gonzalo

Como enviar datos por post usando file_get_contents

Hace poco escribú un artículo sobre la diferentecia de usar file_get_contents y curl en php. Y comenté que con la función file_get_contents se podían enviar datos usando el método POST pero que había que realizar un contexto de php.
En este artículo os voy a poner un ejemplo sencillo para que se pueda ver. Aunque yo creo que es mejor y más elegante usar curl para hacer este tipo de cosas. Ya sea mandar información por POST o GET.


$postdata = http_build_query(
    array(
        'var1' => 'some content',
        'var2' => 'doh'
    )
);

$opts = array('http' =>
    array(
        'method'  => 'POST',
        'header'  => 'Content-Type: application/x-www-form-urlencoded',
        'content' => $postdata
    )
);

$context  = stream_context_create($opts);

$result = file_get_contents('http://url-que-recibe-el-post.es', false, $context);


Como se puede ver en el ejemplo anterior:
  • postdata es un array donde se usa la función http_build_query para generar una cadena de consulta codificada estilo URL
  • postdata es un array donde se define que se va a usar el método POST para mandar los datos y se define la cabecera de la petición y el contenido que es el array anterior
  • conext es el contexto para hacer la llamada POST usando la función file_Get_contents

Espero que os haya servido este ejemplo tan sencillo.