php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
FORMULAR POST erzeugen


 
jogisarge
08-12-2008, 16:47 
 
Hallo zusammen,

ich habe ein HTML-Script bekommen, welches ein Formular per POST verschickt, auswertet und ein Ergebnis zurückliefert.
Nachdem Abschicken kommt so eine htaccess-Loginbox und nach Eingabe der Logindaten wird das Script ausgewertet und das Ergebnis im Browser angezeigt.

<form action="https://www.server.com" method="POST">
<textarea style="width:640px; height:480px;" name="xml_data"></textarea>
<input type="submit">
</form>

wenn ich nun ein XML-Dokument in die Textarea einfüge, wird das verarbeitet, und das richtige Ergebnis kommt zurück.

Wie kann ich das ganze per PHP ausführen ?
Per curl und fsockopen habe ich das bereits versucht, aber da kommt nur
Bad Request (Invalid URL)



// $file enthält den XML-Code, der manuell im Formular gepostet, funktioniert
$kennung = base64_encode("tuser:tpass");
$data = "";
$fp = fsockopen("ssl://www.server.com",443,$errstr,$errno);

if(!$fp)
{
die();
}
else
{
fputs($fp, "POST HTTP/1.1\r\n");
fputs($fp, "Host: www.server.com\r\n");
fputs($fp, "Authorization: Basic ".$kennung." \r\n");
fputs($fp, "Content-length: ". strlen($file) ."\r\n");
fputs($fp, "Content-type: text/xml\r\n");
fputs($fp, "Connection: close\r\n\r\n");
fputs($fp, $file);
}
while(!feof($fp))
{
$fget = fgets($fp, 128);
$data .= $fget;
}
fclose($fp);
$xml_arr = explode("\r\n\r\n",$data);
echo $xml_arr[1];


Leider erreiche ich von den Heinis niemand, und es wäre cool, wenn jemand ne idee hat, wie das geht ?

Gruß jogi

 
jens76
09-12-2008, 12:27 
 
häng das xml-document doch einfach per upload an das formular an
und dann per simplexml verarbeiten!

 
jogisarge
09-12-2008, 13:21 
 
häng das xml-document doch einfach per upload an das formular an
und dann per simplexml verarbeiten!


Wie soll das gehen ?
Die Verarbeitung mache ja nicht ich, und ich hab da auch kein Einfluß drauf.

 
jens76
09-12-2008, 14:18 
 
woher soll ich das denn wissen das du das nciht verarbeitest...

dann mußt eben die hochgeladene datei einlesen und per fsocketopen übertragen...

 
jogisarge
09-12-2008, 14:35 
 
dann mußt eben die hochgeladene datei einlesen und per fsocketopen übertragen...
genau das habe ich ja versucht.
Das steht doch im ersten posting von mir.

 
krel
09-12-2008, 14:41 
 
na bei dem oben genannten, weiß der Server ja auch nicht, wo denn die einzelnen Felder sind..
Wie sieht denn dein Curl ansatz aus? Damit sollte es eigentlich relativ schnell machbar sein, falls es da dann auch nicht funktionieren sollte, dann schau dir den request mal genauer an, bspw mit dem Firefox

 
jogisarge
09-12-2008, 14:47 
 
Mein CURL Ansatz sieht so aus:

$kennung = base64_encode("tuser:tpass");
$data = $file;
$headers =
array(
"Authorization: Basic " . $kennung
);
echo $data;
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_URL,"https://www.server.com");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

$respdata = curl_exec($ch);
if (curl_errno($ch))
{
print "Error: " . curl_error($ch);
}
else
{
curl_close($ch);
echo "<pre>";
echo $respdata;
echo "</pre>";
}

 
krel
09-12-2008, 14:52 
 
da sagst du dem Server immer noch nicht welches Feld da ist bzw sein sollte..

$data = "xml_data=".$file

 
jogisarge
09-12-2008, 15:01 
 
jetzt kommt:
Bad Request (Invalid URL)
aber die URL stimmt.


Alle Zeitangaben in WEZ +2. Es ist jetzt 11:13 Uhr.