steffen: Mit PHP Formular (Dateiupload) verschicken

Beitrag lesen

Hallo Tom,

derzeit schaut der jetzige Stand der funktion so aus:

function PostToHost($host, $port, $path, $referer, $data_to_send)  
 {  
  echo "test";  
      $dc = 0;  
      $bo="-----------------------------305242850528394";  
  
      $fp = fsockopen($host, $port, $errno, $errstr);  
      if (!$fp) {  
          echo "errno: $errno \n";  
          echo "errstr: $errstr\n";  
          return $result;  
      }  
  
      fputs($fp, "POST $path HTTP/1.0\n");  
      fputs($fp, "Host: $host\n");  
      fputs($fp, "Referer: $referer\n");  
      fputs($fp, "User-Agent: Mozilla/4.05C-SGI [en] (X11; I; IRIX 6.5 IP22)\n");  
      fputs($fp, "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*\n");  
      fputs($fp, "Accept-Charset: iso-8859-1,*,utf-8\n");  
      fputs($fp, "Content-type: multipart/form-data; boundary=$bo\n");  
  
      foreach($data_to_send as $key=>$val) {  
          if (preg_match("/filename/i", $key)) {  
              $n = "\n";  
          } else {  
             $n = "\n\n";  
         }  
          $ds =sprintf("--%s\nContent-Disposition: form-data; name=\"%s\"".$n."%s\n", $bo, $key, $val);  
          $dc += strlen($ds);  
      }  
      $dc += strlen($bo)+3;  
      fputs($fp, "Content-length: $dc \n");  
      fputs($fp, "\n");  
  
      //  
      foreach($data_to_send as $key=>$val) {  
          if (preg_match("/filename/i", $key)) {  
              $n = "\n";  
          } else {  
             $n = "\n\n";  
         }  
          $ds =sprintf("--%s\nContent-Disposition: form-data; name=\"%s\"".$n."%s\n", $bo, $key, $val);  
          fputs($fp, $ds );  
      }  
      $ds = "--".$bo."--\n";  
      fputs($fp, $ds);  
  
      while(!feof($fp)) {  
          $res .= fread($fp, 1);  
      }  
      fclose($fp);  
  
      return $res;  
}  
  
$dns_name = "lancom-" . $_POST['item16'];  
$host = gethostbyname($dns_name);  
$port = 80;  
$path = "/loadconf/doit";  
$referer = "lancom-" . $_POST['item16'] . "/loadconf/";  
$fa = @file("./user/" . ($ip_factor) . "." . $_POST['item4'] . ".lcs");  
$xf="Content-Type: application\n\n". implode("", $fa);  
$data["file\"; filename=\"" . ($ip_factor) . "." . $_POST['item4'] . ".lcs"] = $xf;  
  
$x = PostToHost($host, $port, $path, $referer, $data);  
  

Das klappt auch eigentlich ganz gut und ich bekomme auch die eigentliche Seite angezeigt, in der stht, dass der Upload erfolgreich war, jedoch wenn ich dann auf den Router schaue ist dort keine Config augespielt.

Zudem würde ich gerne Erfahren, wass genau das Boundary bedeutet, bzw wieso ich die ausgerechnet diesen Zahlencode brauche.

Genutzt habe ich diesen Beispiel: http://www.php-faq.de/q-code-upload.html

Jedoch frage ich mit, wieso ich das Die hochzuladene Datei einlesen muss.

Vielleicht könnt ihr mir helfen wäre sehr dankbar dafür :)

mfg steffen