Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 19

Thema: FileSend Version 1.0 (Datei Hosting Script mit Email-Benachrichtigung)

  1. #1
    TP-Specialist Avatar von phpBuddy
    Registriert seit
    Aug 2004
    Ort
    Kaiserslautern
    Beiträge
    4.678

    FileSend Version 1.0 (Datei Hosting Script mit Email-Benachrichtigung)

    Hallo zusammen

    Heute 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, 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 hier posten oder per Email schicken.


    p.s. Vielen Dank an Torsten für's Script testen. Nicht zuletzt durch seine Nachfrage für das Script (die schon einige Wochen zurück liegt) habe ich mich entschlossen das Script "öffentlichkeitstauglich" zu machen und hier zu posten.
    Angehängte Dateien Angehängte Dateien
    Geändert von phpBuddy (02.09.2007 um 15:27 Uhr)

  2. #2
    TP-Junior
    Registriert seit
    Nov 2007
    Beiträge
    10
    erstmal danke für das script
    ist nicht ohne!!!


    Wenn dir mal langweilig ist, wäre folgendes noch super:

    - Ladebalken (wie weit ist der Upload?)
    - Datei an mehr Emails senden

  3. #3
    TP-Specialist Avatar von phpBuddy
    Registriert seit
    Aug 2004
    Ort
    Kaiserslautern
    Beiträge
    4.678
    Hallo tobi1908,

    freut mich das Dir das Script gefällt.

    Zu den Vorschlägen...
    Da das Script klein und schlank ist und bleiben soll, wird es nicht so ohne weiteres möglich sein einen Uploadstatus einzubauen. PHP und HTML kann das nicht, also muß man da wohl auf eine JS/Ajax oder Flash Lösung zurückgreifen um so etwas zu realisieren.

    Die multiple Empfänger wurden auch schon mal angeregt, aber auch das ist nicht so einfach möglich, weil das diverse Probleme aufwirft. Z.B. kann ein Einzelner die Datei dann nicht mehr löschen, weil gewartet werden müsste bis alle Empfänger die Datei heruntergeladen haben (und was ist, wenn einer oder mehrere die datei gar nicht herunterladen?!). Das würde aber auch bedeuten, daß eine DB oder Flatfile angebunden werden müsste um festzuhalten wer wann die Datei heruntergeladen hat und wer noch nicht und dann müsste der Admin manuell löschen. Das wiederrum würde bedeuten, daß das ganze Script komplett umgeschrieben werden müsste, weil das nicht so ohne weiteres eingebaut werden kann, da so eine Funktionalität nie vorgesehen war.
    Ein weiterer Grund, den man evtl im Auge behalten muß ist, daß so ein Script für mehrere Empfänger u.U. nicht geduldet wird und seinen Webauftritt gesperrt bekommt. Denn so ziemlich alle Provider von Miet-Webspace verbieten in ihren AGB ausdrücklich das anbieten von Filesharing im Stil von einem Download-Server. Genau als das könnte man so ein Script auslegen, wenn man exzessiv Gebrauch davon macht und der Provider kleinlich ist.

    Aber mal sehen, vielleicht gibt es irgendwann einmal Version 2.0 in einer komplett überarbeiteten Variante.

  4. #4
    TP-Junior
    Registriert seit
    Nov 2007
    Beiträge
    10
    Huhu


    Dann habe ich gleich noch eine Idee, die man einfließen lassen könnte.

    Und zwar beim Upload (oder sogar 14 Tage z.b. fest einstellen) kann man einstellen, wie lang die Datei auf dem Server liegt. Und wenn sie vorab schon keiner selber gelöscht hat, wird diese nach der Zeit gelöscht.


    Somit kann der Empfänger der Email den Link noch schnell X geben etc~
    Oder wenn die File vergessen wird zu löschen, wird der Server nicht zugemüllt!





    Grüßla

  5. #5
    TP-Veteran Avatar von Guin
    Registriert seit
    Nov 2006
    Ort
    Nordholz
    Beiträge
    1.685
    Ich habe mir mal erlaubt eine Kleinigkeit zu aendern.
    Die Daten koennen in ein anderes Verzeichnis als das wo die index.php liegt hochgeladen werden.
    Vorteil: die Daten koennen ausserhalb des html Ordner gespeichert werden.

    Gibt es Anmerkungen? Habe ich was uebersehen?
    Irgend was Sicherheitskritisches?

    Aenderungen
    Hinzufuegen:
    PHP-Code:
    $_uploadverzeichnis="/pfad/zum/uploadordner/"//der Ordner soll die Dateirechte 777 haben 
    Ersetze
    PHP-Code:
    $DateiNameNeu strtrstrtolower$_FILES['datei']['name'] ), $ersetzen ); 
    durch
    PHP-Code:
    $DateiNameNeu $_uploadverzeichnis.strtrstrtolower$_FILES['datei']['name'] ), $ersetzen ); 
    Ersetze (Achtung, kommt zweimal vor im Skript und muss beides mal ersetzt werden)
    PHP-Code:
    foreach (glob"*.*" ) as $Dateiname
    durch
    PHP-Code:
    foreach (glob$_uploadverzeichnis."*.*" ) as $Dateiname
    Damit die Links in den Loeschmails angepasst werden (optional), noch folgendes abaendern:
    Ersetze
    PHP-Code:
    $AdminMailBody  "Soeben wurde die Datei <strong>{$DateiDownload}</strong> heruntergeladen.<br>"
    durch
    PHP-Code:
    $AdminMailBody  "Soeben wurde die Datei <strong>".str_replace($_uploadverzeichnis,"",$DateiDownload)."</strong> heruntergeladen.<br>"
    Ersetze
    PHP-Code:
    $AdminMailBody .= "<a href=\"{$PfadZumScript}index.php?aktion=loeschen&datei={$_GET['datei']}\">{$DateiDownload} l&ouml;schen</a>"
    durch
    PHP-Code:
    $AdminMailBody .= "<a href=\"{$PfadZumScript}index.php?aktion=loeschen&datei={$_GET['datei']}\">".str_replace($_uploadverzeichnis,"",$DateiDownload)." l&ouml;schen</a>"
    [edit]
    Loeschfehler behoben.
    Geändert von Guin (17.11.2007 um 19:43 Uhr)
    Gruss Guin
    Mein Blog

  6. #6
    TP-Junior
    Registriert seit
    Nov 2007
    Beiträge
    10
    Hallo


    was muss ich genau ändern, damit ich:

    1. ein Feld "Absender" (email) habe
    2. der eingetragene Absender auch in der Email als Absender genannt wird (und nicht der Admin)

    danke

    ps: wäre super, wenn mir recht schnell jemand helfen könnte... ist wichtig

  7. #7
    TP-Veteran Avatar von Guin
    Registriert seit
    Nov 2006
    Ort
    Nordholz
    Beiträge
    1.685
    Moin
    was muss ich genau ändern, damit ich:

    1. ein Feld "Absender" (email) habe
    2. der eingetragene Absender auch in der Email als Absender genannt wird (und nicht der Admin)
    1. an die gewuenschte Stelle im html Teil ein Inputfeld mit Namen "irgendwas" einfuegen.
    z.B.
    HTML-Code:
    <label for="irgendwas">Absender</label><input type="text" name="irgendwas" id="irgendwas" />
    2. die erste Zeile mit "$AdminEmail" wird auskommentiert.
    darunter wird eingefuegt:
    PHP-Code:
    $AdminEmail=$_POST['irgendwas'];  //Achtung es wird nicht auf Fehler oder sonstige unerwuenschte Absichten geprueft. 
    Achtung Fremddaten (z.B. aus einem Formular) sollten nie ungeprueft verwendet werden. In diesem Fall kann man die Email mit der Funktion "checkEmail" pruefen und mit htmlspecialchars entschaerfen (wie im Skript schon vorgemacht).
    Gruss Guin
    Mein Blog

  8. #8
    TP-Junior
    Registriert seit
    Nov 2007
    Beiträge
    10
    Schonmal dickes dickes THX!!!!!!!!!!!!!!

    jetzt hab ich noch eine Frage (weils mich inters.):

    ich hatte unten folgendes geschrieben:

    <label for="mail_sender">Sender-Email:</label><input type="text" name="mail_sender" id="mail_sender" value="<?php echo $_POST['mail_sender']; ?>" />
    Was hätte ich jetzt hier ändern müssen, dass es geht??
    Irgendwie bin ich an dem Punkt hängen geblieben. Oder wäre dies so eh nicht gegangen?

    $MailHeader = "From:{$AdminEmail}<{$AdminEmail}>\n";


    Thx Leute
    Geändert von tobi1908 (22.11.2007 um 15:38 Uhr)

  9. #9
    TP-Veteran Avatar von Guin
    Registriert seit
    Nov 2006
    Ort
    Nordholz
    Beiträge
    1.685
    Statt "irgendwas" kannst du natuerlich auch "mail_sender" nehmen.
    Also einfach alles durchtauschen. Es sind ja nur 2 Zeilen geaendert.
    Gruss Guin
    Mein Blog

  10. #10
    TP-Junior
    Registriert seit
    Nov 2007
    Beiträge
    10
    Ja, dein Vorschlag ist auch logisch und geht auch 1a...

    ABER ich hatte (vor deinem Vorschlag) eben den gedanken wie unten stehen.
    Und mich hätte es nur inters. ob der vom Ansatz auch gefunzt hätte, oder ich ich in einen kompl. falschen weg gelaufen bin.

    Ich wollte also die Zeile abändern

    PHP-Code:
    $MailHeader "From:{$AdminEmail}<{$AdminEmail}>\n"
    mit folgender Eingabe:

    PHP-Code:
    <label for="mail_sender">Sender-Email:</label><input type="text" name="mail_sender" id="mail_sender" value="<?php echo $_POST['mail_sender']; ?>" />




    Zur Abfrage der Email

    warum kann ich nicht folgendes schreiben?

    PHP-Code:
                if (isset( $_POST['send_file'] ) &&
                    
    $_FILES['datei']['size'] > &&
                    
    checkEmail$_POST['mail_empfaenger']) !== false) &&
                    
    checkEmail$_POST['mail_absender']) !== false



    sorry für die "doofen" fragen, aber ich bin erst am Lernen

  11. #11
    TP-Veteran Avatar von Guin
    Registriert seit
    Nov 2006
    Ort
    Nordholz
    Beiträge
    1.685
    Ich wollte also die Zeile abändern...
    Wenn ich dich richtig verstehe, nein.

    warum kann ich nicht folgendes schreiben?
    Doch kannst du
    Funktioniert nur nicht.
    Weil "mail_sender" und "mail_absender" unterschiedlich sind.


    sorry für die "doofen" fragen, aber ich bin erst am Lernen
    Dann darf es auch nicht dringend und schnell sein.
    Gruss Guin
    Mein Blog

  12. #12
    TP-Junior
    Registriert seit
    Nov 2007
    Beiträge
    10
    Ja... ok.... doof geschrieben!
    Sind natürlich gleich

    PHP-Code:
    <label for="mail_absender">Absender:</label><input type="text" name="mail_absender" id="mail_absender"/> 

    PHP-Code:
    if (isset( $_POST['send_file'] ) &&
                    
    $_FILES['datei']['size'] > &&
                    
    checkEmail$_POST['mail_empfaenger'] ) !== false) &&
                    
    checkEmail$_POST['mail_absender'] ) !== false

  13. #13
    TP-Veteran Avatar von Guin
    Registriert seit
    Nov 2006
    Ort
    Nordholz
    Beiträge
    1.685
    Fehlermeldung?
    Pharserror?
    Schau dir mal die Klammern an.
    Gruss Guin
    Mein Blog

  14. #14
    TP-Member
    Registriert seit
    Oct 2009
    Beiträge
    98
    Hallo,
    hab leider Probleme mit dem Script besser gesagt bekomme es nicht am laufen:
    Hab folgendes bis jetzt gemacht:

    // Einstellungen für das Script
    $AdminPasswort = 1234; // Upload Passwort
    $AdminEmail = adam-m-foto@web.de; // Admin Email
    $AdminNotify = 1; // Admin per Email informieren wenn eine Datei heruntergeladen wurde (1 = Ja | 0 = Nein)
    $PfadZumScript = http://www.adam-m-foto/html/fotovorschau/; // Komplette Webadresse zum Script
    $Dateiendungen = array( "zip", "rar", "7z", "pdf" ); // erlaubte Dateiendungen
    $StandardBetreff = Hier sind die Vorschaufotos; // Standardbetreff falls kein Betreff im Formular angegeben wurde

    1.Verstehe jetzt aber nicht was mit: "diesem Ordner muß man CHMOD 777 geben" gemeint ist.
    2.Sorry aber mit der kompletten Webadresse zum Script hab ich auch Probleme.Auf meinem Server sieht das Ganze so aus wenn ich mich mit Filezilla-FTP einlogge:
    - Unter /kann ich keinen Ordner anlegen
    -Erst unter /html kann ich einen Ordner anlegen.
    -Diesen habe ich nun erstellt /html/fotovorschau/
    Lautet die richtige Adresse zu dem Script nun http://www.adam-m-foto.de/fotovorschau/index.php/ ???

    Danke für die Hilfe.

  15. #15
    TP-Veteran Avatar von Guin
    Registriert seit
    Nov 2006
    Ort
    Nordholz
    Beiträge
    1.685
    Moin

    0. die Anführungszeichen hast du hier nur vergessen, oder auch im Skript nicht angegeben?

    1. der Ordner muss die Dateirechte 777 haben. Also Besitzer, Gruppe und Jeder darf in den Ordner schreiben, lesen und ausführen. Je nach Webspaceanbieter ist das aber nicht nötig (wenn beispielsweise der Webserver als User läuft)
    2. Du musst einfach nur die Webadresse zum Skript angeben. Vermutlich dann http://www.adam-m-foto.de/fotovorschau/
    Ob das wirklich richtig ist, kann ich nicht sagen, da ich nicht weiss, auf welches Verzeichnis deine Domain zeigt. Wenn in /html direkt deine Webseite liegt, sollte es gehen.
    Gruss Guin
    Mein Blog

Seite 1 von 2 12 LetzteLetzte

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51