» Willkommen auf Internet und Netzwerk «

Subseven
aus gefallen
offline



OC God
18 Jahre dabei !

Intel Xeon
3400 MHz


Also ich hab im Netz einen wirklich gutes Uploadscript gefunden, aber eine Macke hat es.
Es wurde ein Filenamengenerator ein gebaut und die dateien haben dann so unschöne Namen.
Kann mir Wer helfen die wieder "auszuabuen"?


Ich hab schon herausgefunden dass es mit dem
Code
// Zufallsdateiname erzeugen

$rand_value = randomstring($File);

$newfilenamekompl = "$rand_value.$endung";

$savename = $picpfad.$newfilenamekompl;


und dem
Code

// Zufallszeichen fuer Dateiname

//-----------------------------------------------------------------//

function randomstring($dateiname) {

$dateiname = strtolower(substr(md5(microtime()),0,25));

return $dateiname;


Zusammen hängt wäre echt danke bar wenn das funktionieren würde.
Ich hab zwar im Netz zwei Antworten gefunden, aber ich konnte die irgendwie nicht umsetzen.

Schon im vorraus vielen dank :godlike:









Edit:



Komplettes Script:


Code
<?php



//-----------------------------------------------------------------//

// Konfiguration Anfang

//-----------------------------------------------------------------//

// Pfad zum Musikverzeichnis, mit / am Ende!

// kann so bleiben wenn bei $URL unterhalb das Verzeichnis auch bilder heisst

$picpfad = 'musik/';

// ganz wichtig: auf dem server muss musik das attribut  777 = berechtigung bekommen

// URL zum Uploadverzeichnis

$URL = 'http://deinedomain.de/';



// Anzahl Uploadfelder

$erlaubte_uploads = 5;



// max. Uploadgroesse in KB

$max_upl_size = 100000;



// Erlaubte Dateiendungen, Dateiendungen mit Komma trennen und klein schreiben

$arr_erlaube_dateityp = array(mp3,zip,rar,hjpg,ico,gif,bmp,swf,png,pdf,doc,xls);

//-----------------------------------------------------------------//

// Konfiguration Ende

//-----------------------------------------------------------------//



// Header ausgeben

echo $output = preg_replace("/<__(\w.+?)__>/e", "\$\\1", tparser("templates/uploadheader.html"));

//-----------------------------------------------------------------//

// Uploadformular

//-----------------------------------------------------------------//

if (!isset($_POST['PICUPLOAD'])) {



// Uploadform ausgeben

uploadformausgabe();



} else {

//-----------------------------------------------------------------//

// Upload ausfuehren

//-----------------------------------------------------------------//

$erlaubte_extensionen = join(', ',$arr_erlaube_dateityp);



// Uploaddurchlauf Start

for ($i=0; $i<count($_FILES['UPFILE']['name']); $i++) {



if ($_FILES['UPFILE']['name'][$i] == '') {

continue;

}



// Zeichenfilter

$File = strtr(stripslashes($_FILES['UPFILE']['name'][$i]), '\'" |\\/?!*:#', '___________');



// Dateiendung ermitteln

$punkt = strrpos($File, '.');

$laenge = strlen($File);

$endung = strtolower(substr($File, -($laenge - $punkt - 1)));

$dname = substr($File, 0, -($laenge - $punkt - 1));



// Fehlerausgabe wenn Dateiendung nicht erlaubt

if (!in_array($endung, $arr_erlaube_dateityp)) {

fehlerausgabe("Die Dateiendung <b>$endung</b> ist nicht erlaubt");

continue;

}



// Dateigroessencheck

if ($_FILES['UPFILE']['size'][$i] > ($max_upl_size * 10000)) {

$zugross = round($_FILES['UPFILE']['size'][$i]/10000, 2);

fehlerausgabe("Datei zu gro&szlig;");

continue;

}



switch($_FILES['UPFILE']['error'][$i]) {

case 0:

break;

case 1:

fehlerausgabe("Die Datei ist zu gross");

continue 2;

break;

case 2:

fehlerausgabe("Die Dateigr&ouml;&szlig;e  &uuml;bersteigt das erlaubte Limit von $max_upl_size KB");

continue 2;

break;

}







$dateipfad_name = $picpfad.$File;



// Zufallsdateiname erzeugen

$rand_value = randomstring($File);

$newfilenamekompl = "$rand_value.$endung";

$savename = $picpfad.$newfilenamekompl;



// hochgeladene Daeien speichern

if(@move_uploaded_file($_FILES['UPFILE']['tmp_name'][$i], $savename)) {



// Zusammenfassen fuer Uploadstatusausgabe

if (isset($arr_erlaube_dateityp) and in_array($endung, $arr_erlaube_dateityp)) {



// Ausgabe anpassen falls noetig

$show_uploadokfiles  .= "<b>$File</b> gespeichert als: <br><a href=\"$URL/$newfilenamekompl\" target=\"_blank\">$newfilenamekompl</a><br>";

}



chmod($savename, 0777);



} else {

fehlerausgabe("Kann Datei nicht speichern");

}

}





if (isset($errors) and count($errors)>0) {

Uploadfehler($errors);

}



if ($show_uploadokfiles != '') {

echo  preg_replace("/<__(\w.+?)__>/e", "\$\\1", tparser("templates/uploadok.html"));

}



if (!file_exists($picpfad)) {

echo "<b>Zielverzeichnis $picpfad nicht gefunden</b><br>";

} elseif (!is_writable($picpfad)) {

echo "<b>Zielverzeichnis $picpfad nicht beschreibar</b><br>";

clearstatcache();

} else {

echo "<a href=\"index.php\">Zum Uploadformular zur&uuml;ck</a>";

}



}

// Footer ausgeben

echo $output = preg_replace("/<__(\w.+?)__>/e", "\$\\1", tparser("templates/uploadfooter.html"));

//-----------------------------------------------------------------//

// Zufallszeichen fuer Dateiname

//-----------------------------------------------------------------//

function randomstring($dateiname) {

$dateiname = strtolower(substr(md5(microtime()),0,25));

return $dateiname;

}

//-----------------------------------------------------------------//

// Templateausgabe

//-----------------------------------------------------------------//

function tparser($tmplname) {

$lines = implode("",file($tmplname));

return $lines;

}



//-----------------------------------------------------------------//

// Uploadform

//-----------------------------------------------------------------//

function uploadformausgabe() {

global $erlaubte_uploads, $zeige_uploadrechte, $max_upl_size;





if ($_SERVER['QUERY_STRING'] !== '') {

$action = $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'];

} else {

$action = $_SERVER['PHP_SELF'];

}



$max_upl_size_out = $max_upl_size * 10000;



$dateicount = 0;

for ($i=0; $i<$erlaubte_uploads; $i++) {

$dateicount++;

$uploadrowout .= preg_replace("/<__(\w.+?)__>/e", "\$\\1", tparser("templates/uploadfilerow.html"));

}



$show_uploadlimitationen = zeige_uploadlimits();

$uploadformhtml = preg_replace("/<__(\w.+?)__>/e", "\$\\1", tparser("templates/uploadtable.html"));



echo $uploadformhtml;

}



//-----------------------------------------------------------------//

// Zeige Uploadfehler

//-----------------------------------------------------------------//

function Uploadfehler($errors) {



foreach($errors as $file => $message) {

$show_noupload .="<li> $file: $message.<br>";

}

$show_uploadlimitationen = zeige_uploadlimits();

echo  preg_replace("/<__(\w.+?)__>/e", "\$\\1", tparser("templates/uploadfehler.html"));

}





//-----------------------------------------------------------------//

// Uploadlimitationen ausgeben

//-----------------------------------------------------------------//

function zeige_uploadlimits() {

global $arr_erlaube_dateityp, $max_upl_size;



$erlaubte_extensionen = join(', ',$arr_erlaube_dateityp);



if ($max_upl_size > 10000) {

$maximum = round(($max_upl_size / 10000), 2) . "MB";

} else {

$maximum = "$max_upl_size KB";

}

return "<b>Dateigr&ouml;&szlig;enlimit</b>: $maximum<br><b>Erlaubte Dateiendungen</b>: $erlaubte_extensionen";

}



//-----------------------------------------------------------------//

// Fehlerausgabe

//-----------------------------------------------------------------//

function fehlerausgabe($message, $delete = false) {

global $errors, $File, $dateipfad_name;



$errors[$File] = $message;



if ($delete == true) {

unlink($dateipfad_name);

}

}

//-----------------------------------------------------------------//

?>


(Geändert von Subseven um 21:49 am Okt. 15, 2007)


(Geändert von Subseven um 22:18 am Okt. 23, 2007)


Dummheit ist kein Kavaliersdelikt

Beiträge gesamt: 5765 | Durchschnitt: 1 Postings pro Tag
Registrierung: Dez. 2005 | Dabei seit: 6674 Tagen | Erstellt: 21:31 am 15. Okt. 2007
wakko0816
offline



OC God
19 Jahre dabei !

Intel Core i5
3500 MHz @ 4200 MHz
55°C mit 1.18 Volt


Habs nur überflogen, aber im Prinzp sollte es so gehen:
Code

........
$dateipfad_name = $picpfad.$File;
// Zufallsdateiname erzeugen
//$rand_value = randomstring($File);
//$newfilenamekompl = "$rand_value.$endung";
//$savename = $picpfad.$newfilenamekompl;
$savename = $dateipfad_name
// hochgeladene Daeien speichern
if(@move_uploaded_file($_FILES['UPFILE']['tmp_name'][$i], $savename)) {
.......

Dann sollte die gespeicherte Datei den gleichen Namen haben, wie die, die
Du hochgeladen hast und im Ordner "musik/" wohnen.

(Geändert von wakko0816 um 0:56 am Okt. 16, 2007)

Beiträge gesamt: 1146 | Durchschnitt: 0 Postings pro Tag
Registrierung: Aug. 2004 | Dabei seit: 7155 Tagen | Erstellt: 0:55 am 16. Okt. 2007
Subseven
aus gefallen
offline



OC God
18 Jahre dabei !

Intel Xeon
3400 MHz


Super!
Danke schön hat funktioniert.


Dummheit ist kein Kavaliersdelikt

Beiträge gesamt: 5765 | Durchschnitt: 1 Postings pro Tag
Registrierung: Dez. 2005 | Dabei seit: 6674 Tagen | Erstellt: 10:37 am 16. Okt. 2007
Subseven
aus gefallen
offline



OC God
18 Jahre dabei !

Intel Xeon
3400 MHz


Hab grade Festgestlett, dass er jetzt bei der Ausgabe den Downloadlink nicht angibt, also hab ich die Variable $dateipfad_name eingefügt.
nun gibt er mir einen pfad aus, aber der stimmt nicht.
Würdest du nochmal drüber gucken?


Dummheit ist kein Kavaliersdelikt

Beiträge gesamt: 5765 | Durchschnitt: 1 Postings pro Tag
Registrierung: Dez. 2005 | Dabei seit: 6674 Tagen | Erstellt: 23:35 am 16. Okt. 2007
wakko0816
offline



OC God
19 Jahre dabei !

Intel Core i5
3500 MHz @ 4200 MHz
55°C mit 1.18 Volt


Gib mal ein Beispiel, wie der Pfad im Link ist, und wie der richtige Pfad
lautet. Wenn man den Unterschied kennt ist leicht zu suchen. ;)

[edit]
Oder mal nach der Zuweisung von $savename noch folgende Zeile
eintragen:
Code
$newfilenamekompl = $ savename:

Da hätte es eigentlich einen Fehler geben müssen....
Hab nicht gesehen, dass "$newfilenamekompl" nochmal gebraucht wird,
und das hatte ich auskommentiert.

(Geändert von wakko0816 um 7:50 am Okt. 17, 2007)

Beiträge gesamt: 1146 | Durchschnitt: 0 Postings pro Tag
Registrierung: Aug. 2004 | Dabei seit: 7155 Tagen | Erstellt: 7:42 am 17. Okt. 2007
Subseven
aus gefallen
offline



OC God
18 Jahre dabei !

Intel Xeon
3400 MHz


Als Link zeigt eran:
/web//web/*.exe

er müsste aber:

/web/*.exe


Hab allerdings den pfad:
Code
$show_uploadokfiles  .= "<b>$File</b> gespeichert als: <br><a href=\"$URL/$newfilenamekompl\" target=\"_blank\">$newfilenamekompl</a><br>";


auf

Code
$show_uploadokfiles  .= "<b>$File</b> gespeichert als: <br><a href=\"$URL/$datepfad_name\" target=\"_blank\">$datepfad_name</a><br>";

geändert



(Geändert von Subseven um 11:04 am Okt. 17, 2007)


(Geändert von Subseven um 22:19 am Okt. 23, 2007)


Dummheit ist kein Kavaliersdelikt

Beiträge gesamt: 5765 | Durchschnitt: 1 Postings pro Tag
Registrierung: Dez. 2005 | Dabei seit: 6674 Tagen | Erstellt: 10:38 am 17. Okt. 2007
wakko0816
offline



OC God
19 Jahre dabei !

Intel Core i5
3500 MHz @ 4200 MHz
55°C mit 1.18 Volt


Was hast Du denn für "$URL" angegeben?
Hängt da etwa noch ein "/web" hinten dran?
Der "/", der da zu viel ist, wohnt in der Zeile
Code
$show_uploadokfiles  .= "<b>$File</b> gespeichert als: <br><a href=\"$URL/$newfilenamekompl\" target=\"_blank\">$newfilenamekompl</a><br>";

hinter "$URL".
Vermutlich klappt es auch, wenn Du das "$URL" mitsamt des "/" weglässt.

Vor allem würde ich die Seite mit dem Upload-Skript mal irgendwie gegen
Missbrauch schützen. Zur Zeit kann da jeder hochladen. Und da Du auch noch
so grosszügig die URL hier preisgegeben hast, brauchst Du Dich nicht
wundern, wenns Dir da ganz schnell den Webspace zumüllt.
Also so , wie es zur Zeit ist, hast Du da eine scheunentor-grosse
Sicherheitslücke. ;)

(Geändert von wakko0816 um 12:49 am Okt. 17, 2007)

Beiträge gesamt: 1146 | Durchschnitt: 0 Postings pro Tag
Registrierung: Aug. 2004 | Dabei seit: 7155 Tagen | Erstellt: 12:45 am 17. Okt. 2007
Subseven
aus gefallen
offline



OC God
18 Jahre dabei !

Intel Xeon
3400 MHz



Zitat von wakko0816 um 12:45 am Okt. 17, 2007
Was hast Du denn für "$URL" angegeben?
Hängt da etwa noch ein "/web" hinten dran?
Der "/", der da zu viel ist, wohnt in der Zeile
Code
$show_uploadokfiles  .= "<b>$File</b> gespeichert als: <br><a href=\"$URL/$newfilenamekompl\" target=\"_blank\">$newfilenamekompl</a><br>";

hinter "$URL".
Vermutlich klappt es auch, wenn Du das "$URL" mitsamt des "/" weglässt.

Vor allem würde ich die Seite mit dem Upload-Skript mal irgendwie gegen
Missbrauch schützen. Zur Zeit kann da jeder hochladen. Und da Du auch noch
so grosszügig die URL hier preisgegeben hast, brauchst Du Dich nicht
wundern, wenns Dir da ganz schnell den Webspace zumüllt.
Also so , wie es zur Zeit ist, hast Du da eine scheunentor-grosse
Sicherheitslücke. ;)

(Geändert von wakko0816 um 12:49 am Okt. 17, 2007)




Da kann meinet wegen jeder Hochladen mir schnuppe, lösche eh einmal am Tag und die Domain tausche ich auch noch.

Aber wo ist das "/" zuviel?


Dummheit ist kein Kavaliersdelikt

Beiträge gesamt: 5765 | Durchschnitt: 1 Postings pro Tag
Registrierung: Dez. 2005 | Dabei seit: 6674 Tagen | Erstellt: 13:32 am 17. Okt. 2007
wakko0816
offline



OC God
19 Jahre dabei !

Intel Core i5
3500 MHz @ 4200 MHz
55°C mit 1.18 Volt


Zwischen "$URL" und "$newfilenamekompl".
Zumindest, wenn da ein "/web/" mit in der URL hängt.
Deswegen sieht der generierte Link ja so aus:
Code
http://server-ftp.no-ip.org/web//web/*.exe

Und da $newfilenamekompl eigentlich "web/*.endung" lauten sollte,
wird da irgendwo ein "web/" zuviel eingebaut. Und ich vermute nach
wie vor, dass das mit in $URL steht.

Beiträge gesamt: 1146 | Durchschnitt: 0 Postings pro Tag
Registrierung: Aug. 2004 | Dabei seit: 7155 Tagen | Erstellt: 14:53 am 17. Okt. 2007
Subseven
aus gefallen
offline



OC God
18 Jahre dabei !

Intel Xeon
3400 MHz


So jetzt gehts ;) lag an $URL.
Wegen der Sicherheitslücke, ist das schlimm wie es ist? wenn ich den ordner immer leere macht das doch nichts oder?
html htm php usw. sind zum hochladen gesperrt.


Dummheit ist kein Kavaliersdelikt

Beiträge gesamt: 5765 | Durchschnitt: 1 Postings pro Tag
Registrierung: Dez. 2005 | Dabei seit: 6674 Tagen | Erstellt: 15:38 am 17. Okt. 2007