getreidemuehlen
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 02.09.2007, 15:04   #1
TP-Moderator
 
Benutzerbild von Rizzo
 
Registriert seit: Aug 2004
Ort: Kaiserslautern
Rizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine User

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
Dateityp: zip phpBuddy.eu_FileSend.zip (5,4 KB, 170x aufgerufen)

Geändert von Rizzo (02.09.2007 um 15:27 Uhr).
Rizzo ist offline   Mit Zitat antworten


Alt 13.11.2007, 15:15   #2
TP-Junior
 
Registriert seit: Nov 2007
tobi1908 macht alles soweit korrekt
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
tobi1908 ist offline   Mit Zitat antworten
Alt 14.11.2007, 18:11   #3
TP-Moderator
 
Benutzerbild von Rizzo
 
Registriert seit: Aug 2004
Ort: Kaiserslautern
Rizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine User
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.
Rizzo ist offline   Mit Zitat antworten
Alt 14.11.2007, 18:22   #4
TP-Junior
 
Registriert seit: Nov 2007
tobi1908 macht alles soweit korrekt
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
tobi1908 ist offline   Mit Zitat antworten
Alt 17.11.2007, 18:18   #5
TP-Insider
 
Benutzerbild von Guin
 
Registriert seit: Nov 2006
Ort: Lübeck
Guin hilft, wo's gehtGuin hilft, wo's gehtGuin hilft, wo's geht
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).
Guin ist offline   Mit Zitat antworten
Alt 22.11.2007, 14:18   #6
TP-Junior
 
Registriert seit: Nov 2007
tobi1908 macht alles soweit korrekt
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
tobi1908 ist offline   Mit Zitat antworten
Alt 22.11.2007, 14:43   #7
TP-Insider
 
Benutzerbild von Guin
 
Registriert seit: Nov 2006
Ort: Lübeck
Guin hilft, wo's gehtGuin hilft, wo's gehtGuin hilft, wo's geht
Moin
Zitat:
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).
Guin ist offline   Mit Zitat antworten
Alt 22.11.2007, 15:25   #8
TP-Junior
 
Registriert seit: Nov 2007
tobi1908 macht alles soweit korrekt
Schonmal dickes dickes THX!!!!!!!!!!!!!!

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

ich hatte unten folgendes geschrieben:

Zitat:
<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?

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


Thx Leute

Geändert von tobi1908 (22.11.2007 um 15:38 Uhr).
tobi1908 ist offline   Mit Zitat antworten
Alt 22.11.2007, 15:38   #9
TP-Insider
 
Benutzerbild von Guin
 
Registriert seit: Nov 2006
Ort: Lübeck
Guin hilft, wo's gehtGuin hilft, wo's gehtGuin hilft, wo's geht
Statt "irgendwas" kannst du natuerlich auch "mail_sender" nehmen.
Also einfach alles durchtauschen. Es sind ja nur 2 Zeilen geaendert.
Guin ist offline   Mit Zitat antworten
Alt 22.11.2007, 15:44   #10
TP-Junior
 
Registriert seit: Nov 2007
tobi1908 macht alles soweit korrekt
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
tobi1908 ist offline   Mit Zitat antworten
Alt 22.11.2007, 15:52   #11
TP-Insider
 
Benutzerbild von Guin
 
Registriert seit: Nov 2006
Ort: Lübeck
Guin hilft, wo's gehtGuin hilft, wo's gehtGuin hilft, wo's geht
Zitat:
Ich wollte also die Zeile abändern...
Wenn ich dich richtig verstehe, nein.

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


Zitat:
sorry für die "doofen" fragen, aber ich bin erst am Lernen
Dann darf es auch nicht dringend und schnell sein.
Guin ist offline   Mit Zitat antworten
Alt 22.11.2007, 15:59   #12
TP-Junior
 
Registriert seit: Nov 2007
tobi1908 macht alles soweit korrekt
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
tobi1908 ist offline   Mit Zitat antworten
Alt 22.11.2007, 16:08   #13
TP-Insider
 
Benutzerbild von Guin
 
Registriert seit: Nov 2006
Ort: Lübeck
Guin hilft, wo's gehtGuin hilft, wo's gehtGuin hilft, wo's geht
Fehlermeldung?
Pharserror?
Schau dir mal die Klammern an.
Guin ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik > Traum-Scripts
FileSend Version 1.0 (Datei Hosting Script mit Email-Benachrichtigung) [Script] FileSend Version 1.0 (Datei Hosting Script mit Email-Benachrichtigung)
« IPTC Daten von JPGs auslesen | Script zum download ohne "ziel speichern unter" »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 07:22 Uhr.