|
Subseven
aus gefallen offline
OC God 19 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 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ß"); 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öße ü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ü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öß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: 6984 Tagen | Erstellt: 21:31 am 15. Okt. 2007
|
|
|
|
|
|
|
|
Subseven
aus gefallen offline
OC God 19 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: 6984 Tagen | Erstellt: 13:32 am 17. Okt. 2007
|
|
|
|
|
|