PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Upload Script frage



dadie
16.01.2005, 13:56
Hi ,

Also ich suche ein Script bzw. die befehle dafür also man soll über eine auswähl eine .zip
(nur eine .zip) uploaden können wöhrend des Upload vorganges soll diese Zip datei so verschlüsselt werden das man sie nur mit hilfe eines Passwortes öffnen kann (welches man vorher fesgelegt hat ) so nur wie geht das ? Oder muss ich da gar mich ins CGI tera stürzen und ein Packer schreiben ?? oder geht noch mit PHP ??


MFG

Dadie

Lukas
16.01.2005, 14:22
Der entsprechende <input>-Tag:
<input name="datei" type="file" />Php-Code (für nur Zipfiles):
if($_FILES[datei][type] != "application/x-zip-compressed"){
die("Falscher Dateityp!");
} else{
copy($_FILES[datei][tmp_name], "files/dateiname.zip");
}
Das ist jetzt so halb aus einem Buch abgeschrieben, halb selbstgemacht, und ungetestet.
Für die Passwortfunktion fällt mir so spontan nichts ein, du könntest höchstens das Verzeichnis mit .htaccess schützten. Alternativ sollte eine Bitrotation möglich sein (fällt mir jetzt so spontan ein, Jeez hat das beim letzten Programmiercontest gemacht), darauf kommt niemand so schnell (aber ist dann natürlich nicht PW-geschützt).

dead_orc
16.01.2005, 14:40
Üblicherweise würde man sowas dann wohl über https-Verbindung machen, aber AFAIK ist es nicht ganz einfach, eine aufzubauen. Eine Alternative wäre, dass du die Zip-Funktion zum hinzufügen eines Passwortes zum Archiv benutzt, so dass du einfach hinterher auch in deinem Zipper das Passwort eingibst und gut ist. Evtl. geht das auch automatisch mit der ZIP-Erweiterung von PHP, jedoch habe ich mich mit der nie beschäftigt.
Noch eine (sehr komplizierte) Möglichkeit wäre, ein Skript zu bauen, dass die Datei ausgibt, wenn man sich eingeloggt hat (so wie beim Forum). Die Datei selbst liegt in einem Verzeichnis, auf das kein HTTP-Zugriff erlaubt ist, womit die Dateien dann wohl auch sicher vor externen Abrufen wären. Bei der Übertragung könnte ein böswilliger Hacker sie wahrscheinlich trotzdem lesen.
Wenn mir zum Schluss noch ne Frage gestattet ist: Wozu brauchst du das verdammt? Willst du hochgeheime Dateien auf deinen Webspace laden??

dadie
16.01.2005, 14:56
Wozu brauchst du das verdammt? Willst du hochgeheime Dateien auf deinen Webspace laden??

Kann ich nett sagen wird ne Coole überraschung fürs Forum :D
Das wichtige dabei ist halt nur das die datei irgentwie geschütz ist
so das man sie nett öffnen kann auser man hat Admin rechte mir egal ob über FTP php oder sons wo drüber !

Chocwise
18.01.2005, 11:32
Du könntest den Uploadstream versuchen durch eine mcrypt_generic() (http://de.php.net/mcrypt_generic)-Funktion laufen zu lassen bevor die ZIP-Datei dann abgelegt wird.

Das Ding ist nur, das die ZIP-Datei nicht lokal auf dem Rechner der Saugenden decoded werden kann (es sei denn er hat einen eigenen PHP-Parser installiert oder ein spezielles Programm das mit diesem Algorythmus verschlüsselte Dateien entschlüsseln kann). Daher wird es wohl nötig sein ein Downloadscript zu basteln das eine verschlüsselte Datei wärend dem Downloadstream, gegen Vorlage des Passworts wieder entschllüsselt.

Also wird die ZIP-Datei beim Upload verschlüsselt auf dem Server abgelegt und landet dann nach dem Download wieder entschlüsselt auf dem Rechner des Users... solange er das Passwort richtig im Script eingegeben hat.

Lies dir die Manualseite zu der Funktion aufmerksam durch. Du musst nämlich einen Key initialisieren und AFAIK die Methode festlegen.

Dieses Beispiel könnte auch weiterhelfen die Encryption zustande zu bekommen:
http://www.phpreferenz.de/php_file_function.mdecrypt-generic.html

dadie
20.01.2005, 16:39
Jo also ich habe das ganze problem noch nett ganz gelöst (weil ich es woll bsiher nett so ganz kappiere) naja egal werde woll noch ein bischen googeln :)

Jedoch habe ich ne Frage wie Frage ich die Grösse einer datei ab ?
Also beim oder nach dem Upload ?

Lukas
20.01.2005, 16:49
Die Größe einer Datei in Byte liegt in $_FILES[dateiname][size] (wobei "dateiname" der Name des input-Felds der Upload-seite ist).

dadie
20.01.2005, 16:58
thx :)

Die umrechnung von byte auf kilobyte ist doch / 1024 oder ?

Lukas
20.01.2005, 17:03
Die umrechnung von byte auf kilobyte ist doch / 1024 oder ?
Jein. Wenn du auf der Platte ein File mit der Größenangabe ein KB hast, ist das 1024 Byte groß. Allerdings ist ein KB genauer gesagt nur 1000 Byte groß.
Link dazu (http://www.heise.de/newsticker/meldung/4987)

dadie
20.01.2005, 17:07
aha und noch ne dumme frage wie runde ich auf ?
also auf erste stelle sprich XXX,X den XXXXX,XXXXXXXXXXXXXXXX ist doch schon dämlich für einen filemanager ^^°

Chocwise
20.01.2005, 17:12
aha und noch ne dumme frage wie runde ich auf ?
also auf erste stelle sprich XXX,X den XXXXX,XXXXXXXXXXXXXXXX ist doch schon dämlich für einen filemanager ^^°
round($variable,1);

dadie
20.01.2005, 17:14
round($variable,1);

Sorry habe mich vertahn klappt doch ^^°

EDIT: 3 mal ediert in 10 sekunden meine fresse