phpBuddy

PHP und Sex

Was PHP und Sex gemeinsam haben? Beides sollte man niemals ohne ausreichenden Schutz praktizieren! Diese Rubrik gibt wichtige Tipps, wie man PHP gegen Attacken absichert und wie man sichere Scripts programmiert. Pflichtlektüre!

Sie sind hier: Startseite Downloads phpBuddy.eu FileSend
File Send Script

Hiermit bringe ich ein weiteres kleines aber (hoffentlich) feines Script unter's Volk, das mir schon gute Dienste geleistet hat. Hierbei handelt es sich um ein FileSend Script mit dem man Dateien an Freunde und Bekannte (oder wen auch immer) verschicken kann.


Wer braucht so ein Script?

Ursprünglich entwickelt habe ich dieses Helferlein, weil das verschicken von teilweise größeren Files (10 bis 200 MB) regelmäßig das Postfach von Freunden und Bekannten verstopft hat. Jeder der das schon mal erlebt hat weiß wie ärgerlich das ist. Früher bin ich dann auf freie Anbieter wie z.B. yousendit.com ausgewichen aber diese Dienste sind entweder langsam, vollgepackt mit Werbung oder haben starke Einschränkungen was das Volumen angeht.

Irgendwann habe ich dann ein FileSend Script für den Privatgebrauch geschrieben, mit dem ich quasi beliebig Dateien auf meinen FTP laden kann und meine Freunde es sich von dort wieder downloaden können - Probleme gelöst. Keine verstöpften Postfächer mehr, schnelle und werbefreie Downloads, die Traffic-Flat wird mal ausgenutzt, alle sind happy.


Wie funktioniert das FileSend Script

Die Arbeitsweise ist total simple, fast schon primitiv und erinnert an ein Kontaktformular mit Dateiupload. Man hat also eine Eingabemaske mit Empfänger, Betreff (optional), Nachricht (optional) und einem Uploadfeld und kann dann, passwortgeschützt, eine Email an den Empfänger schicken in dem sich ein Link für den Download der Datei befindet und ein weiterer Link zum löschen der Datei. Wurde die Datei heruntergeladen bekommt der Admin eine formlose Email die über den Download informiert. In dieser Mail ist ebenfalls ein Link um die Datei per Klick vom FTP zu löschen, falls der Empfänger dies versäumt hat.
Während des Uploads wird ggfs der Dateiname angepasst, da Leerzeichen durch einen Unterstrich ersetzt werden. Ebenso werden deutsche Umlaute umgewandelt; aus ä wir ae, ö wird zu oe, usw.


Voraussetzungen und Einschränkungen

Vorausgesetzt wird natürlich PHP-fähiger Webspace und genug Platz auf dem FTP. Beides ist heutzutage für sehr kleines Geld zu bekommen. Die einzige Einschränkung die es gibt ist abhängig von der Server-Konfiguration. Je nach Paket und Provider kann da die maximale Uploadgröße stark variieren. Standardmäßig hat man wohl bei den meisten Providern 8 MB pro Datei zur Verfügung. Bei meinem Provider (all-inkl) sind es z.B. 200 MB und bei einem eigenen Server gibt es keine Einschränkungen.
Wenn man nicht genau weiß wie groß die Dateien sein dürfen ist das auch nicht weiter schlimm, weil ich im Script eine Abfrage eingebaut habe die die php.ini ausliest und einem genau anzeigt bei wieviel KB das Limit liegt. Übersteigt man dieses Limit wird der Upload verweigert und es wird keine Mail verschickt.

Wichtig: Es gibt für das Script keine Möglichkeit vorher zu prüfen ob eine Datei zu groß ist. Man muß also den ganzen Upload abwarten um zu erfahren ob die Datei akzeptiert wird. Deswegen vorher selbst im Datei-Explorer prüfen wie groß eine Datei ist und dies mit dem angegeben Wert im Script vergleichen.


Installation von FileSend 1.0

Das ganze Script besteht nur aus einer einzigen Datei. Diese muß man mit einem Editor (z.B. Notepad) öffnen und im oberen Bereich einige Variablen anpassen. Zum einen ist da das Passwort das für den Upload erforderlich ist. Dann gibt es die Admin Email-Adresse die als Absender der Mail eingetragen wird aber an die auch die Download-Bestätigung geschickt wird. AdminNotify muß auf 1 oder 0 gesetzt werden - 1 bedeutet man wird benachrichtigt, 0 man wird nicht benachrichtigt, wenn die Datei heruntergeladen wurde. PfadZumScript ist sehr wichtig und hier muß die komplette Adresse eingetragen werden, weil daraus die Links in den Mails generiert werden! Dateiendungen ist ein Array das man beliebig erweitern kann. Uploads die eine Dateiendung haben die nicht in diesem Array vorkommen werden abgelehnt, also vorher sicherstellen das die Datei auch vom Script akzeptiert wird. Standardbetreff wird als Betreff der Email benutzt wenn man im Formular keinen Betreff ausfüllt.

Das war's soweit im Script. Auf dem Server muß nun ein Ordner erstellt werden, z.B. FileSend und diesem Ordner muß man CHMOD 777 geben (wenn PHP als Fast-CGI läuft, muß der Ordner 755 haben!), damit darin auch Dateien abgelegt werden können. In diesen Ordner kommt dann das FileSend Script (index.php). Aus Sicherheitsgründen sollte sich das Script nicht im root-Verzeichnis oder in einem anderen Verzeichnis befinden in dem noch andere Dateien liegen!

Damit wäre das Script auch schon einsatzbereit. Im Browser einfach die Adresse zum Script aufrufen und loslegen.

W I C H T I G
Bitte nicht wie ein Schimpanse 30 mal auf Upload klicken und hoffen das es deswegen schneller geht - Das wirkt kontraproduktiv!! Die Upload-Geschwindigkeit ist abhängig von der Internetverbindung. Dateien mit mehreren MB (oder gar 50 oder 100 oder mehr MB) dauern selbst mit DSL seine Zeit!
Auch wenn das Script den Anschein macht das es nicht mehr arbeitet einfach so lange die Finger davon lassen bis es eine Rückmeldung gibt, die auf jeden Fall kommt.

Bleibt mir nur noch viel Spaß mit dem Script zu wünschen und immer dran denken: Benutzung auf eigene Gefahr! Bugreports, Feedback, Vorschläge bitte per Kontaktformular an mich schicken.


File Send Script Version 1.0 (Release: September 2007)