// Variables $host = "www.host.com"; $referer = "http://www.host-referer.com"; $path = "/ruta/al/form.php"; $data = "Lo que vamos a mandar por POST"; // Abriendo un socket seguro (443) $fp = fsockopen('ssl://'.$host, 443, $errno,$errstr,30); // Enviando cabeceras y datos fputs($fp, "POST $path HTTP/1.0\r\n"); fputs($fp, "Host: $host\r\n"); fputs($fp, "Referer: $referer\r\n"); fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n"); fputs($fp, "Content-length: ". strlen($data) ."\r\n"); fputs($fp, "Connection: close\r\n\r\n"); fputs($fp, $data); // Recogiendo el resultado $result = ''; while(!feof($fp)) $result .= fgets($fp, 128); // Cerramos y visualizamos respuesta fclose($fp); print_r($result);Como veis no hace falta que la petición vaya envuelta en una variable si el servidor no lo espera de esa forma.
PHP: POST directo a través de socket
Para hacer una petición POST a través de php -sin utilizar curl()- podemos hacerlo simplemente con sockets -con HTTPS si lo queremos seguro- y algo de suerte -para que todo funcione a la primera-: