PHP Daten per Post weitergeben

Begonnen von sidewind, 05 Juni 2003, 20:17:19

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

sidewind

Hi Jungs,

wiedermal ne (dringende) Frage an euch PHP Götter.

Habe das Problem das ich Daten per Formular bekomme. Diese Daten müssen (nach Prüfung) jedoch an eine andere Adresse wiederum per method=Post übergeben werden.

Natürlich aber ohne Benutzereingriff.
Kann man da evtl. was mit der Header() Funktion machen?

Hab schonmal danach geschaut aber ich komm nicht weiter.
Per GET ist das ja kein Problem.  Da kann man ja einfach mit Header (Location:...) den String zamwurschteln. Leider ist die Schnittstelle aber auf POST Daten ausgelegt. Die kann ich auch nicht ändern.

Hoffentlich habt ihr einen Tipp für mich..

Danke vorerst!!!!


Micro

mit Header ists ja das selbe, auch per get in der Adresszeile

Aber wenn Du die Datei auf dem anderen Server aufrufst, dann kannst Du doch auch die Variable per Post an den Server weitergeben.

Du musst doch auf dem anderen Server eine Schnittstelle haben, von der Du eine Datei zu Dir "ziehen" kannst und operieren darfst ... oder?


sidewind

Besten Dank Ihr zwei.

Hier ist echt Kompetenz im Spiel. Danke

Habe die Funktion für einen HTTPS Server abgeändert.
Ich hoffe es müsste gehen. Leider bekomme ich im Moment noch keine Testdaten ob die Schnittstelle zu testen.  Was meint Íhr dazu?

 
function PostToHost($host, $path, $referer, $data_to_send) {
  $fp = fsockopen($host,443);
  printf("Open!\n");
  fputs($fp, "POST $path HTTPS/3.0\n");
  fputs($fp, "Host: $host\n");
  fputs($fp, "Referer: $referer\n");
  fputs($fp, "Content-type: application/x-www-form-urlencoded\n");
  fputs($fp, "Content-length: ".strlen($data_to_send)."\n");
  fputs($fp, "Connection: close\n\n");
  fputs($fp, "$data_to_send\n");
  printf("Sent!\n");
  while(!feof($fp)) {
      $res .= fgets($fp, 128);
  }
  printf("Done!\n");
  fclose($fp);

  return $res;
}


 



metan

hi,

möchte diese script für eine anmeldung bei einem separaten webmail-client benutzen, welcher nur post kann.
allerding läuft das nicht ganz so wie es sollte.
habe anstelle der XXX den port 110 eingegeben.
was mach ich falsch.

würde mich über hilfe echt freuen.

metan

Zitat
function PostToHost($host, $path, $referer, $data_to_send) {
  $fp = fsockopen($host,XXX);
  printf("Open!\n");
  fputs($fp, "POST $path HTTPS/3.0\n");
  fputs($fp, "Host: $host\n");
  fputs($fp, "Referer: $referer\n");
  fputs($fp, "Content-type: application/x-www-form-urlencoded\n");
  fputs($fp, "Content-length: ".strlen($data_to_send)."\n");
  fputs($fp, "Connection: close\n\n");
  fputs($fp, "$data_to_send\n");
  printf("Sent!\n");
  while(!feof($fp)) {
      $res .= fgets($fp, 128);
  }
  printf("Done!\n");
  fclose($fp);

  return $res;
}
 
 

jubilee

Hmmmmm

 
Zitathabe anstelle der XXX den port 110....
$fp = fsockopen($host,XXX);
POST $path HTTPS/3.0
Ich denke, wenn Du mit einem PostOfficeProtokoll (POP-)Server über Port 110 sprechen willst, dann kannst Du HTTPS/3.0 als Header wohl vergessen.
Da  kann der POP3 nix mit anfangen. Oder anders, wenn Du mir HTTPS kommunizieren willst, solltest Du mal auf Port 443 versuchen.
MfG
jubilee

metan

werde es mal probieren.
danke dir.

sidewind

bin zurzeit auf den curl trip umgestiegen. damit soll es auch mit https servern problemlos möglich sein.

leider funzt es noch nicht so , mal schaun ob ich das noch hinkriege

hier ein sample:

 
function PostToSSL ($url, $data)
{
   $cu = curl_init();
   
   curl_setopt($cu, CURLOPT_URL, $url);
   curl_setopt($cu, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
   curl_setopt($cu, CURLOPT_POST,1);
   curl_setopt($cu, CURLOPT_POSTFIELDS,$data);
   curl_setopt($cu, CURLOPT_RETURNTRANSFER,1);
   curl_setopt($cu, CURLOPT_TIMEOUT,120);
   $output = curl_exec($cu);
   $succeeded  = curl_errno($cu) == 0 ? true : false;
   if ($succeeded = true )
    {
       echo "Erfolgreich";
    }
   else {
    echo curl_errno($cu);
   }  
   curl_close($cu);

}
?>