PHP-Uploadscript: ohne Formular sofort hochladen?



  • Hi,

    da ich von PHP wenig Ahnung habe muss ich euch mal um Hilfe bitten.
    Es soll eine Zip-Datei auf unseren Webserver geladen werden. Dazu
    verwende ich momentan folgendes PHP-Skript:

    <?php
        if(!is_array($_FILES["datei"])){
            echo '<form action="upload1.php" method="post" enctype="multipart/form-data">
            <input type="file" name="datei"><br>
            <input type="submit" value="Hochladen">
            </form>';
        }else{
            move_uploaded_file($_FILES['datei']["c:\\bericht.txt"], "upload/".$_FILES['datei']["c:\\bericht.txt"]);
            echo "OK ist oben";
        }
    ?>
    

    Allerdings soll der Upload über die URL und damit mit festvorgegebenen Variablen erfolgen. Ich dachte an sowas www.xy.de/upload1.php?file=c:\bericht.txt

    Geht das überhaupt? Momentan klappt es nur über das Formular.



  • ich hoffe stark, dass dies nicht funktioniert



  • Schau dir mal die curl-Funktionen von php an.



  • Ich wollte ungerne noch zusätzlich auf weitere Komponenten zugreifen, bzw. diese nachinstallieren.

    Kann man alternativ eigentlich eine Email via PHP mit einem lokal auf dem
    Rechner liegenden Attachment senden? Ich muss von dem Rechner der Kunden
    die Berichtdatei zu uns transferieren. Per FTP sehe ich das Problem, dass
    jemand die Zugangsdaten rausfiltern könnte.

    Andere Wege fallen mir (außer PHP-Upload oder Email) momentan nicht ein.
    Und smtp-Logindaten wollte ich auch nicht gerade in meine exe mit einbinden 😉



  • Ich werde den optionalen Weg drin lassen, dass der Kunde manuell
    die Datei übersenden kann. Bei obigem Code ist mir nur noch nicht
    klar, wie ich prüfen kann, ob auch wirklich der Pfad zu einer Datei
    angegeben wurde. Denn es erscheint momentan immer die Meldung, dass
    die Datei übertragen wurde. Auch dann, wenn gar keine Datei gewählt wurde 🙄



  • Bau doch im Kundenprogramm eine entsprechende Funktion ein, die die Datei übermittelt

    Außer über das eingebaute Formular gibt es keine Möglichkeit, auf das Dateisystem des Benutzers zuzugreifen (mit Ausnahme der Cookies etc.).

    Die Missbrauchsmöglichkeiten wären einfach zu enorm, wenn plötzlich der Browser beginnt, ungefragt Dateien von meinem lokalen Dateisystem an den Webserver zu übermitteln



  • Bau doch im Kundenprogramm eine entsprechende Funktion ein, die die Datei übermittelt

    Genau daran kaue ich ja so schwer. Wäre schon dankbar wenn mir jemand sagen könnte wie man
    ggf. die Uploadgröße der Datei in meinem Fall einschränken könnte. Dachte an 3 MB max.



  • Hallo,

    if($FILE['datei']['size'] <  $maxfilesizeinbyte) {
       doSomething();
    } else {
       //Datei ist zu groß
    }
    

    EDIT:

    Ich hatte mir eine solche Funktion mal geschrieben (allerdings für Bilddateien, aber das sollte keinen großen Unterschied machen)

    //----------------------------------------------------------------------------
    function f_upload($FILE, $path, $filename, $maxfilesize, $maxfilewidth, $maxfileheight)
    {               
      if($FILE['datei']['size'] <  $maxfilesize) {
    
        list($w, $h) = GetImageSize($_FILES['datei']['tmp_name']);
        if ($w <= $maxfilewidth AND $h <= $maxfileheight)
        {  
    
          if (is_dir($path)) {;}
          else mkdir($path, 0777);
    
          $file=$path."/".$filename;
    
          move_uploaded_file($_FILES['datei']['tmp_name'], $file);
          chmod($file, 0777);
    
          return true;
        }
        else return false;
      }
      else return false;
    } 
    //----------------------------------------------------------------------------
    

    LG, Micha



  • Der Nachteil der Größenprüfung im PHP-Script ist, dass die Datei dort bereits auf den Webserver geladen wurde und im Temp-Verzeichnis liegt. Daher ist es sinnvoll Uploadbegrenzungen auch in den PHP und Apache-Konfigurationen anzupassen.



  • Wieso baust du in deinem Server nicht einfach einen Ordner ein, einen FTP-Server, der per Anonymous laeuft und das war's dann? Vorteile:

    • Du brauchst keine Zugangsdaten verstecken
    • Es besteht keine Gefahr fuer dich, dass jemand auf deinem Server Mist baut
    • Mit Zugriffsrechten laesst sich sogar hier festlegen, dass der Benutzer nur hochladen, aber nicht herunterladen oder loeschen / vorhandene Dateien aendern darf.


  • Ich hege die feste Annahme, dass es sich hierbei um dem Thread eines Script-Kiddies handelt, der nichts - in dem Sinne - Gutes vorhat und man ihm keine Hilfe zukommen lassen sollte.

    Mal ehrlich:
    Daten hochladen ohne den Benutzer zu informieren, Anonym E-Mails versenden, Zugangsdaten in exe-Dateien integrieren, Anonyme FTP-Server usw. Das klingt doch schon allein durch gesunden Menschenverstand mehr als Suspekt. Sowas fragt man doch nicht echt in einem öffentlichen Board, in dem sich sowieso mehrere Gesetzeshüter die Klinke in die Hand geben.



    1. Es laesst sich nicht anhand eines Forumbeitrags nachweisen, dass jemand in irgendeiner Form Boeses vor hat.
    2. Wir leben in Deutschland ja nach dem Prinzip: Im Zweifelsfrei immer fuer den Angeklagten. 😉

    Natuerlich laesst sich manches vermuten, aber ich denke doch eher, dass es sich um diverse Log-Dateien handelt, zur Ueberwachung von automatischen Steuerungsprozessen im Serverbereich. Dumm nur, dass da eine Firma jemanden dransetzt, der das noch nicht gemacht hat. 🙄



  • Kenner der Kiddies schrieb:

    Ich hege die feste Annahme, dass es sich hierbei um dem Thread eines Script-Kiddies handelt, der nichts - in dem Sinne - Gutes vorhat und man ihm keine Hilfe zukommen lassen sollte.

    Mal ehrlich:
    Daten hochladen ohne den Benutzer zu informieren, Anonym E-Mails versenden, Zugangsdaten in exe-Dateien integrieren, Anonyme FTP-Server usw. Das klingt doch schon allein durch gesunden Menschenverstand mehr als Suspekt. Sowas fragt man doch nicht echt in einem öffentlichen Board, in dem sich sowieso mehrere Gesetzeshüter die Klinke in die Hand geben.

    Da kennst du wohl die falschen Leute. Nichts dergleichen steht in meiner Absicht. Nicht, dass ich mich dir gegenüber ernsthaft rechtfertigen müsste,
    aber unsere Kunden wissen, dass wir Daten rückübertragen. Sie haben uns schließlich damit beauftragt und zahlen Geld dafür 🙄

    Dumme Leute kann man eben nicht schlau machen, was soll's, es ist Sonntag 😃



  • Das Thema hat sich übrigens erledigt. Ich stelle einen FTP-Zugang bereit, der
    die Zip-Archive (die verschlüsselt darauf liegen) entgegen nimmt.

    In den Fällen, wo der Rückgabewert für die FTP-Übertragung negativ ist, oder
    ein Firewallkonzept dazwischenfunkt, kommt mein Uploadskript zum Tragen.

    Von anonymen FTP-Servern habe ich übrigens nix geschrieben. Und in C/C++
    etwas mit in die EXE zu verpacken ist auch nur eine Fingerübung...war aber
    schlußendlich auch nicht meine Absicht.

    Jeder der von seinen Kunden Daten übertragen muss, sollte sich zumindest
    ansatzweise mit dem Thema "Sicherheit der Kundendaten" auseinandersetzen.
    Das mitsniffen von FTP-Zugangsdaten etc. sollte da durchaus bedacht werden...

    In unserem Fall werden die FTP-Daten dann übrigens automatisiert ins Intranet
    wegkopiert. ⚠


Anmelden zum Antworten