heinetz: Formular kapern

Beitrag lesen

Nein. Ich würde an deiner Stelle dann mal Möglichkeit 2 ausprobieren - ein PHP-Skript auf (b), dessen Inhalt sowas ist wie

<?php echo file_get_contents("http://domain.org/form.php"); ?>

(vielleicht etwas weniger minimalistisch, aber für einen ersten Test sollte das reichen)

Ich hab's eben erfolgreich gestestet und so wird jetzt unter (b) der selbe Content ausgegeben, wie unter (a). Aber natürlich funktioniert die Verarbeitung der Daten so noch nicht und ich hab's nun mal auf eigene Faust probiert:

<?php
//Formulardaten verarbeiten

	if ($_SERVER['REQUEST_METHOD'] === 'POST') {
		//entspricht dem Wert in form-action
		$url = 'http://domain.org/form.php?PHPSESSID='.$_GET['PHPSESSID'];
		$data = $_POST;
	
	// use key 'http' even if you send the request to https://...
	$options = array(
	    'http' => array(
	        'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
	        'method'  => 'POST',
	        'content' => http_build_query($data)
	    )
	);
	$context  = stream_context_create($options);
	$result = file_get_contents($url, false, $context);
	if ($result === FALSE) { /* Handle error */ }
	
	echo($result);
    exit;
}
else {
//Formular ausgeben
	header("content-type: text/html; charset=iso-8859-1");
	$form = file_get_contents("https://domain.org/form.php");
	
	//form-action-Attribut im HTML-Quelltext abändern
	$form = str_replace("://domain.org/", "//example.org", $form ); 
	echo $form;
}
?>

Was habe ich gemacht?

Nachdem die "minimalistische" Version funktionierte, habe ich als erstes dafür gesorgt, dass das Formular nicht an (a) sondern an (b) abgeschickt wird und versucht, dort die Daten aus POST serverseitig an (a) zu schicken. (a) liefert auch etwas zurück aber nicht die Bestätigungsseite. D.h. die Daten werden nicht verarbeitet bzw. nicht für valide erklärt. Aber zu klären warum, erscheint mir sehr knifflig.

Die erste Frage ist vielleicht, ob mein Code richtig aussieht.

gruss, heinetz

gruss, heinetz