de.comp.lang.php.* FAQ

25.2. Wie kann ich einen HTTP POST-Request absenden?

Keywords: POST | Request | Methode

Antwort von Kristian Köhntopp

Das Script muss einen Socket mit der Funktion fsockopen() zum Zielserver öffnen und auf diesem Socket dann einen HTTP POST-Request simulieren.

Anbei ein vollständiges Beispiel, das mit CGI-PHP auf der Unix-Kommandozeile verwendet werden kann. Das Script fälscht Einträge in einer Abstimmung auf dem Host www.linux.com, wo es für PHP als beste Scriptsprache stimmt.

#! ./php -q
<?php

function PostToHost($host, $path, $referer, $data_to_send) {
  $fp = fsockopen($host, 80);
  printf("Open!\n");
  fputs($fp, "POST $path HTTP/1.1\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_to_send) ."\r\n");
  fputs($fp, "Connection: close\r\n\r\n");
  fputs($fp, $data_to_send);
  printf("Sent!\n");
  while(!feof($fp)) {
      $res .= fgets($fp, 128);
  }
  printf("Done!\n");
  fclose($fp);

  return $res;
}

$data = "pid=14&poll_vote_number=2";

printf("Go!\n");
$x = PostToHost(
              "www.linux.com",
              "/polls/index.phtml",
              "http://www.linux.com/polls/index.phtml?pid=14",
              $data
);

Valid HTML 4.01! Valid CSS!

25.2. Wie kann ich einen HTTP POST-Request absenden?
http://www.php-faq.de/q/q-code-post.html
Archiv der de.comp.lang.php-FAQ Dies ist eine Archivseite von 2008 und wurde seitdem nicht geändert. Das dclp-FAQ-Team