Nachtrag
Ich werde nun sehen, inwieweit ich nicht nur GET, sondern auch POST verwenden kann, denn das ist ja der einzige Zweck der ganzen Übung...
tja, und da dachte ich, ich ersetze einfach den GET-Request durch einen POST-Request (wie in diesem Beispiel) und erhalte dabei dieses Script:
<?php
// Funktion zum uploaden eines JPEG-Bildes via HTTP-POST
function proxy_client($data_to_send)
{
$proxy_name = '10.1.1.2';
$proxy_port = 8080;
$proxy_user = "";
$proxy_pass = "";
$proxy_cont = '';
$request_url = 'http://www.peutinger-gymnasium.de/html/webcam_upload.php';
$proxy_fp = fsockopen($proxy_name, $proxy_port);
if (!$proxy_fp) return false;
fputs($proxy_fp, "POST $request_url HTTP/1.0\r\n");
if ($proxy_user!="")
fputs($proxy_fp, "Proxy-Authorization: Basic ".
base64_encode("$proxy_user:$proxy_pass").
"\r\n");
fputs($proxy_fp, "\r\n");
fputs($proxy_fp, "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*\r\n");
fputs($proxy_fp, "Accept-Charset: iso-8859-1,*,utf-8\r\n");
fputs($proxy_fp, "Content-type: multipart/form-data; boundary=$bo\r\n");
foreach($data_to_send as $key=>$val)
{
$ds =sprintf("--%s\r\nContent-Disposition: form-data; name=\"%s\"\r\n\r\n%s\r\n", $bo, $key, $val);
$dc += strlen($ds);
}
$dc += strlen($bo)+3;
fputs($proxy_fp, "Content-length: $dc \r\n");
fputs($proxy_fp, "\r\n");
foreach($data_to_send as $key=>$val)
{
$ds =sprintf("--%s\r\nContent-Disposition: form-data; name=\"%s\"\r\n\r\n%s\r\n", $bo, $key, $val);
fputs($proxy_fp, $ds );
}
$ds = "--".$bo."--\r\n";
fputs($proxy_fp, $ds);
while(!feof($proxy_fp))
{
$proxy_cont .= fread($proxy_fp,4096);
}
fclose($proxy_fp);
return $proxy_cont;
}
/********************
* Jetzt geht's los! *
*********************
*
* HTTP-FileUpload
*/
// Diese Bilddatei existiert garantiert
$data = exif_read_data('webcambild.jpg');print_r($data);
// erforderliche EXIF-Daten zum Senden bereit machen
foreach($data as $key => $value) if (is_array($value)) unset ($data[$key]);
$data['webcambild"; filename="webcambild.jpg'] = implode('', file('webcambild.jpg')); Bilddaten holen
// Mich wundern zwar die seltsam verwendeten doppelten Anführungszeichen, aber so hat es ohne Proxy von meinem DSL aus tatsächlich funktioniert...
echo proxy_client($data);
?>
Wo das Problem liegt? Es ist ja schön, dass der BorderManager (Proxy) mit mir verhandelt, aber meine Requests kommen beim Server nicht so an, wie beabsichtigt. Eine Debug-Ausgabe meldet mir, dass $_POST keine Elemente enthält, ebensowenig $_FILES. Das kann nur heißen, dass meine geposteten Daten im Proxy hängenbleiben, oder nicht?
Wie kann ich meinen POST-Request durch den Proxy hindurchschleusen?
Liebe Grüße aus Ellwangen,
Felix Riesterer.