HTML Headeraufbaut bei PHP POST ?

twistmf

Grünschnabel
Ich habe vor einem jahr ein programm geschrieben, dass mir von einem server regelmässig daten runterlädt.

Bis vor einer Woche konnte ich einfach in meinem programm die url mit php script und variblen angeben (für ein formular)

z.B: http://www.dummy.de/test.php?a=5

die entsprechende Seite wurde aufgebaut und das programm konnte mit ihr arbeiten.

Jetzt wurde der Source aber verändert, sprich sie verwenden jetzt POST und mein programm geht jetzt nicht mehr. Ein Freund meinte ich muesste jetzt beim request einen header mitschicken und nicht mehr wie vorher nur einfach die refferenz aufrufen.

Kann mir jemand sagen ob das stimmt bzw. wie ich diesen header aufbauen muss?
 
LoL... das was du meinst ist HTTP und nicht HTML

Der Unterschied zwischen dem HTTP-GET und HTTP-POST ist, dass die "Variablen" nicht über die URL sondern via Body gesendet werden. Das heißt, du mußt mit fsockopen() eine Verbindung zum Zielserver aufbauen danach kannst du den HTTP-Header und Body mit fputs() an den Server schicken...

Das ganze sieht vom Ablauf etwa so aus:
PHP:
function PostToHost($host, $port, $path, $data_to_send)
{
	 $data_tmp = urlencode($data_to_send);
 
	 $fp = fsockopen($host, $port);
	 if (!$fp) { echo "Fehler bei fsockopen"; return 0; }
 
	 // HTTP Header:
	 fputs($fp, "POST $path HTTP/1.0\n");
	 fputs($fp, "Host: $host\n");
	 fputs($fp, "User-Agent: Mozilla/4.05C-SGI [en] (X11; I; IRIX 6.5 IP22)\n");
	 fputs($fp, "Accept: text/html\n");
	 fputs($fp, "Accept: text/plain\n");
	 fputs($fp, "Content-type: aplication/x-www-form-urlencoded\n");
	 fputs($fp, "Content-length: ".strlen($data_tmp)."\n\n");
 
	 // Daten senden
	 fputs($fp, $data_tmp."\n");
 
	 fclose($fp);
}

Der Port wird wahrscheinlich 80 sein und $data_to_send sind die "a=5"

Soviel zum grundsätzlichen Vorgehen....

Viel Spaß und "Glück"
Gruss
 
Erst einmal danke!

Ja ich meinte HTTP header.

Mein programm ist allerdings in c++ und nicht PHP, ich kann auch ohne probleme eine HTTP header an den Host schicken; die frage ist nur wie ich den header im detail aufbauen muss.

Also ich übergebe der c++ Funktion den HTTP header als String,

std::string header = "..."

nur muesste ich jetzt wissen was ich für die punkte schreibe.
 
Alles was "Rot" ist wobei

$path der Pfad und die Datei ist
$host ist glaub ich mal klar

bei Content-length sollten die Anzahl der zu übertragenden Zeichen (im Body-Teil) stehen

nach den Header sendest du dann den HTTP-Body, also das a=5 usw.
 
Alles was "Rot" ist wobei

$path der Pfad und die Datei ist
$host ist glaub ich mal klar

bei Content-length sollten die Anzahl der zu übertragenden Zeichen (im Body-Teil) stehen

nach den Header sendest du dann den HTTP-Body, also das a=5 usw.
 
Zurück