Enviar datos POST en PHP sin formulario, utilizando fsockopen.

Hace unos días, me encontré con la necesidad de enviar una serie de datos, a una página, utilizando el método POST.

Al principio pensé en realizar esto con la función “header” pero no lo conseguí. Entonces comencé a buscar en google y encontré algunos sitios que utilizaban “curl” para el envió de datos.

Los ejemplos que encontré con “curl”, parecían sencillos de implementar, el único problema es que hay que tener “curl” instalado en el servidor.

Seguí buscando en google y encontré otras páginas que explicaban como hacer esto con “fsockopen”.

Una vez utilice “fsockopen” para conectar a un servidor POP3 y obtuve buenos resultados, a si que, me decidí a intentar conseguir mi objetivo inicial utilizando esta función.

A continuación muestro el código de dos ficheros php. Un fichero llamado “enviarPOST.php” y otro llamado “variablesPOST.php”.

Como podréis imaginar por el nombre de los ficheros “enviarPOST.php” se encarga de enviar a “variablesPOST.php” los datos que este espera.

enviarPOST.php

<?php
/**
 * CONFIGURACIÓN
 */
$carpeta = "/tmp/a/variablesPOST.php";
$host = "localhost";
$datos = "variable=correctoOK";
$size = strlen($datos);
 
$c = fsockopen($host, "80");
 
if(!$c) {
    echo "Error!";
}
 
//Enviar datos POST
fputs($c, "POST " . $carpeta . " HTTP/1.0\r\n");
fputs($c, "Content-Type: application/x-www-form-urlencoded\r\n");
fputs($c, "Content-Length: " . $size . "\r\n");
fputs($c, "Connection: close \r\r\n\n");
fputs($c, $datos . "\r\n");
 
//Obtener datos
while(!feof($c))
{
    $datoss .= fgets($c,4096);
}
 echo $datoss;
?>

variablesPOST.php

<?php
echo "La variable es: " . $_POST["variable"];
?>
Share and Enjoy:
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • BarraPunto
  • Bitacoras.com
  • BlinkList
  • Live
  • Meneame
  • MisterWong
  • Technorati
  • Wikio
  • Wikio IT
  • Yahoo! Buzz
  • Yigg
  • LinkedIn
  • MySpace
  • Netvibes
  • YahooMyWeb

No hay artículos relacionados

4 Comments

  1. Eli dice:

    Hola, en caso de necesitar enviar mas de una variable por el POST como podría hacerlo, es que lo he intentado pero no me funciona… Gracias

  2. webmaster dice:

    Hola,

    solo tienes que cambiar la linea:

    $datos = “variable=correctoOK”;

    por

    $datos = “variable=valor1&variable2=valor2&variable3=valor3″;

    para enviar por ejemplo tres variables. Los datos de cada variable deben estar codificados con urlencode().

    Ejemplo:

    $datos = “variable=” . urlencode(”valor1″);
    $datos .= “variable2=” . urlencode(”valor2″);

  3. joseph dice:

    Hola,

    Y si yo quisiera enviar un fichero (por ejemplo una imagen), como lo haria.

  4. webmaster dice:

    Ni idea. Voy a intentarlo.

Leave a Reply